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.
Uyu
uyu is a self moddifing-stack based esoteric programming language created in 2026 by shazun bhasfu as a experiment for golf coding. typically ending in .yu
language overview
uyu operates on its code for memory, that means the ammount of memory (except the stack) is limited by how large the source file is, although dialects may extend it to a constant size while the stack pointer is always pointing to the top element, while point is a pointer that may freely move around the program code with commands.
Labels can be defined using _ next to character(nonprintable characters are included), by default they are set to 0, at the start of program the interpreter will first put all labels on a table and if character is run:
- without being a instruction itself
- not oprand of other commands
- not 0
then it will jump, also defining a label as a command will not run because the command has high priorty, although commands like = an y may ignore those rules as they only care about if its an label
The commands are:
| command | description |
|---|---|
!
|
pop an element on the stack and do the NOT operator on it, and pushes the result |
@
|
ends the program |
#
|
takes the next ascii character and pushes it into the stack |
$
|
input a character and pushes into the stack |
%
|
pops a and b, pushes the result of modulo b%a |
&
|
pops a and b, pushes the result of equality of a and b |
*
|
pops a and b, pushes the result of multiplation of a and b |
-
|
pops a and b, pushes the result of subtraction of b-a, if negative it will overflow to INT_MAX if possible, if true then jumps to label if possible |
+
|
pops a and b, pushes result of addition of a and b |
/
|
pops a and b, pushes result of integer division of b/a, will end the program if a is 0 |
=
|
sets point to point of label of the next character |
:
|
pushes the ammount of stack elements plus one |
;
|
pushes an random value 0 through 9 |
|
|
duplicates the top element a of the stack |
,
|
replaces character at point with top element of the stack |
^
|
replaces the top element of the stack with character at point |
.
|
assuming it has a second period at the end, it will print any character between the first and second dot, with some rules: prints a newline if \ followed by n, prints an period if precede by a \ |
~
|
pops a from the stack and discards a |
`
|
prints the current program source code |
0-9
|
pushes the digit to the stack, if multiple digits then converts them into their decimal form |
( and )
|
for loop, will always run once, at ) and if the top element of the stack is not an 0 jump back to (, else break from the loop |
[ and ]
|
will run [ and ] loop only if current top element of the stack is not 0 |
{ and }
|
compares the source code and the stack character by character until }, if equals then pushes 1 else pushes 0 |
<
|
prints the current element of the stack as a digit |
>
|
pops a,b and c from the stack, inverts their order and pushes back |
?
|
pops a and b, switch their order and pushes them back |
"
|
prints the next character as ascii |
'
|
pushes the character of the input as a digit (error hanling up to interpreter) |
u
|
pops a from the stack and pushes all digits range 1 to a in decending order, if a is 0 then do nothing |
y
|
if the next character is a possible label, jump to it, even y itself as long its valid label cell, else do nothing |
Examples
Truth machine
'["1]"0
99 bottles of beer on the wall
99[<. bottles of beer on the wall,\n. <. bottles of beer\ntake one down pass it around\n. 1-].No bottles of beer on the wall\.\n.
(note it prints 1 bottles)