We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.
Bitsolang
| Designed by | User:Jan Pilavik |
|---|---|
| Appeared in | 2026 |
| Dimensions | 1 |
| Computational class | Turing-complete |
| Reference implementation | Unimplemented |
Bitsolang is an esoteric programming language created in 2026. It is a binary-based tape/cell manipulation language that operates on a highly unique dynamic-length parsing mechanism. The name is derived from this: Bit + esolang.
Overview
The code of bitsolang consists only of binary characters (0 and 1) and line breaks (</br>) acting as command terminators.
Instead of reading fixed-size chunks, the interpreter continuously determines the length of the next block based on the value of the previously measured block. All sizes are strictly self-regulated by a "minus-one" recursion rule, keeping the entire system bounded within 3 bits of native operations.
Parsing & Execution Rules
- Minus-One Length Specification: Every determined value () defines the length of the next block to be measured as exactly digits. (e.g., If the first character is
1(value 1), the next block to be measured is bits long). - 4-Bit Threshold & Return: If the measured length of a block in any step becomes 4 or more bits, the interpreter takes the lower 3 bits of that block's value. This extracted value is then used as the new initial value to restart the length calculation within the same line.
- Line Break Termination: When the scanner hits a line break (
), the link chain freezes, and the block successfully determined right before the termination is executed as the final command for that line.</br>
Commands
| op | behave(Python and BF) | how to use |
|---|---|---|
0 |
cell[point] = 0 |
0
|
1 |
if cell[point] == 0: |
100
|
00 |
cell[point] += 1 |
100
|
01 |
cell[point] -= 1 |
100
|
10 |
point += 1 |
100
|
11 |
point -= 1 |
100
|
000 |
.(BF) |
100
|
001 |
,(BF) |
110001
|
010 |
a = cell[point] |
100
|
011 |
a = cell[point] |
100
|
100 |
cell[point+1] = cell[point] |
110100
|
101 |
cell[point-1] = cell[point] |
110101
|
110 |
cell[point] = cell[0] |
110110
|
111 |
cell[0] = cell[point] |
110111
|
example
cat program (by User:Jan_Pilavik)
110001 110 0 111 110000 110001 110 100 100 100 1