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 ($N$) 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 $1 + 1 = 2$ digits long). - 4-Digit Threshold & Return: If the measured length of a block in any step becomes 4 or more digits, the interpreter immediately strips the lower 3 bits (lower 3 digits) of that block. This lower 3-digit value is then used as the new initial value to immediately restart the length calculation and continue scanning 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