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

From Esolang
Jump to navigation Jump to search
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

  1. 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).
  2. 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.
  3. Line Break Termination: When the scanner hits a line break (</br>), the link chain freezes, and the block successfully determined right before the termination is executed as the final command for that line.

Commands

op behave(Python and BF) how to use
0 cell[point] = 0 0
1 if cell[point] == 0:
goto cell[point]
100
0
00 cell[point] += 1 100
101
01 cell[point] -= 1 100
101
10 point += 1 100
110
101
111
11 point -= 1 100
110
101
111
000 .(BF) 100
100
100
100
100
100
100
100
100
100
110000
001 ,(BF) 110001
110000
010 a = cell[point]
cell[point] = cell[point+1]
cell[point+1] = a
100
100
100
100
100
100
100
100
100
100
110010
011 a = cell[point]
cell[point] = cell[point-1]
cell[point-1] = a
100
100
100
100
100
100
100
100
100
100
110011
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