> 1760745918 283829 PRIVMSG #esolangs :14[[07Special:Log/upload14]]4 upload10 02 5* 03Waffelz 5* 10uploaded "[[02File:BFASM memory diagram.png10]]": A visual representation of the tape after compiling a BFASM program to brainfuck.
< 1760747097 912344 :amby!~ambylastn@host-81-178-159-19.as13285.net QUIT :Quit: so long suckers! i rev up my motorcylce and create a huge cloud of smoke. when the cloud dissipates im lying completely dead on the pavement
> 1760747605 289915 PRIVMSG #esolangs :14[[07C*14]]4 M10 02https://esolangs.org/w/index.php?diff=166194&oldid=165973 5* 03H33T33 5* (-24) 10
> 1760748996 749396 PRIVMSG #esolangs :14[[07BFASM14]]4 10 02https://esolangs.org/w/index.php?diff=166195&oldid=166189 5* 03Waffelz 5* (+10075) 10
> 1760749260 549536 PRIVMSG #esolangs :14[[07User:Waffelz14]]4 10 02https://esolangs.org/w/index.php?diff=166196&oldid=166182 5* 03Waffelz 5* (+38) 10
> 1760749294 535350 PRIVMSG #esolangs :14[[07Asm2bf14]]4 M10 02https://esolangs.org/w/index.php?diff=166197&oldid=162896 5* 03Waffelz 5* (+0) 10
> 1760749631 443838 PRIVMSG #esolangs :14[[07BFASM14]]4 M10 02https://esolangs.org/w/index.php?diff=166198&oldid=166195 5* 03Waffelz 5* (+40) 10
> 1760749900 752251 PRIVMSG #esolangs :14[[07R0q/Commands14]]4 10 02https://esolangs.org/w/index.php?diff=166199&oldid=162759 5* 03WarzokERNST135 5* (-420) 10Replaced content with "please delete this page with [[r0q]]"
> 1760749903 785202 PRIVMSG #esolangs :14[[07R0q14]]4 10 02https://esolangs.org/w/index.php?diff=166200&oldid=162761 5* 03WarzokERNST135 5* (-222) 10
> 1760749906 506073 PRIVMSG #esolangs :14[[07User:WarzokERNST13514]]4 10 02https://esolangs.org/w/index.php?diff=166201&oldid=165113 5* 03WarzokERNST135 5* (-24) 10
> 1760750093 921149 PRIVMSG #esolangs :14[[07User:PJ1114]]4 10 02https://esolangs.org/w/index.php?diff=166202&oldid=162649 5* 03WarzokERNST135 5* (+30) 10
< 1760768429 579517 :Sgeo!~Sgeo@user/sgeo QUIT :Read error: Connection reset by peer
< 1760771516 213822 :tromp!~textual@2001:1c00:3487:1b00:d983:2af2:5deb:9bbb JOIN #esolangs * :Textual User
> 1760777836 911716 PRIVMSG #esolangs :14[[0714]]4 N10 02https://esolangs.org/w/index.php?oldid=166203 5* 03PrySigneToFry 5* (+3292) 10Created page with " is the Chinese version of [[I fuck, you fuck]], and is designed by PSTF. == Commands == === Variable Definition ===
X
Define and initialize X. Any variable is assigned a value of 0 at the beginning. === Increment and Decrement === X
Set X
> 1760779288 160515 PRIVMSG #esolangs :14[[07Fun Video Game14]]4 10 02https://esolangs.org/w/index.php?diff=166204&oldid=165972 5* 03PrySigneToFry 5* (+515) 10
> 1760784251 744646 PRIVMSG #esolangs :14[[07DerpScrp14]]4 10 02https://esolangs.org/w/index.php?diff=166205&oldid=68234 5* 03Kaveh Yousefi 5* (+687) 10Supplemented two example programs, added a hyperlink to my implementation on GitHub, and altered the Unimplemented page category tag to Implemented.
> 1760784384 911758 PRIVMSG #esolangs :14[[07DerpScrp14]]4 M10 02https://esolangs.org/w/index.php?diff=166206&oldid=166205 5* 03Kaveh Yousefi 5* (+1) 10Supplemented a missing ecphoneme ! in the description of an example program.
< 1760784707 460843 :APic!apic@apic.name PRIVMSG #esolangs :Hi
> 1760787024 536934 PRIVMSG #esolangs :14[[07WY-Anglis14]]4 N10 02https://esolangs.org/w/index.php?oldid=166207 5* 03PrySigneToFry 5* (+5704) 10Created page with "WY-Anglis is designed by PSTF, is the Englishized version of wenyan. == Code Sample == All the commands are equivalent to Wenyan, and now I don't want to write them. If you can program in Wenyan and LOLCODE, you can also program in WY-Anglis. === Hello, world!
> 1760787149 511092 PRIVMSG #esolangs :14[[07Language list14]]4 10 02https://esolangs.org/w/index.php?diff=166208&oldid=166173 5* 03PrySigneToFry 5* (+13) 10
< 1760787385 936365 :Lord_of_Life_!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord
< 1760787418 988292 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Ping timeout: 248 seconds
< 1760787464 286426 :Lord_of_Life_!~Lord@user/lord-of-life/x-2819915 NICK :Lord_of_Life
> 1760787804 792858 PRIVMSG #esolangs :14[[07Vesob14]]4 N10 02https://esolangs.org/w/index.php?oldid=166209 5* 03Ivava 5* (+1855) 10Created page with "{{Stub}} {{WIP}} {{infobox proglang |name=Vesob |year=2025 |author=[[User:Ivava]] |refimpl=Python }} '''Vesob''' is easy minimalistic character by character esoteric programming language for some popular examples and output, if else.
Vesob helps in IP things with som
> 1760788006 394582 PRIVMSG #esolangs :14[[07User:Ivava14]]4 10 02https://esolangs.org/w/index.php?diff=166210&oldid=166170 5* 03Ivava 5* (+14) 10/* Esolangs list */
> 1760788396 776542 PRIVMSG #esolangs :14[[07Vesob14]]4 10 02https://esolangs.org/w/index.php?diff=166211&oldid=166209 5* 03Ivava 5* (+89) 10/* Commands */
< 1760788495 551542 :tromp!~textual@2001:1c00:3487:1b00:d983:2af2:5deb:9bbb QUIT :Quit: My iMac has gone to sleep. ZZZzzz…
< 1760791590 477022 :amby!~ambylastn@host-92-17-37-198.as13285.net JOIN #esolangs amby :realname
> 1760792445 644291 PRIVMSG #esolangs :14[[07User:PrySigneToFry/Sandbox/My Rate to the user that I know14]]4 10 02https://esolangs.org/w/index.php?diff=166212&oldid=165771 5* 03PrySigneToFry 5* (+423) 10
> 1760792885 248562 PRIVMSG #esolangs :14[[07DerpScrp14]]4 M10 02https://esolangs.org/w/index.php?diff=166213&oldid=166206 5* 03Kaveh Yousefi 5* (+0) 10Improved the formatting of a code segment.
< 1760793002 585286 :tromp!~textual@2001:1c00:3487:1b00:5da6:eb72:7bdc:37c8 JOIN #esolangs * :Textual User
> 1760794299 442484 PRIVMSG #esolangs :14[[07Special:Log/newusers14]]4 create10 02 5* 03Intiha 5* 10New user account
< 1760796981 746908 :simcop2387!~simcop238@perlbot/patrician/simcop2387 QUIT :Read error: Connection reset by peer
< 1760796982 452633 :perlbot!~perlbot@perlbot/bot/simcop2387/perlbot QUIT :Read error: Connection reset by peer
< 1760797065 591546 :perlbot!~perlbot@perlbot/bot/simcop2387/perlbot JOIN #esolangs perlbot :ZNC - https://znc.in
< 1760797189 254901 :simcop2387!~simcop238@perlbot/patrician/simcop2387 JOIN #esolangs simcop2387 :ZNC - https://znc.in
> 1760797982 281360 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 M10 02https://esolangs.org/w/index.php?diff=166214&oldid=164539 5* 03Ractangle 5* (-31) 10/* Syntax */
> 1760798392 942523 PRIVMSG #esolangs :14[[07Blainbuk14]]4 M10 02https://esolangs.org/w/index.php?diff=166215&oldid=151103 5* 03Ractangle 5* (+0) 10/* Commands */ "chat input" lol
< 1760799250 513861 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name)
< 1760802581 91391 :FreeFull!~freefull@79.186.201.19.ipv4.supernova.orange.pl JOIN #esolangs FreeFull :FreeFull
> 1760804173 848153 PRIVMSG #esolangs :14[[07User:RocketRace14]]4 10 02https://esolangs.org/w/index.php?diff=166216&oldid=166076 5* 03RocketRace 5* (-45) 10
> 1760804269 644510 PRIVMSG #esolangs :14[[07Important lesbian virtual machine14]]4 10 02https://esolangs.org/w/index.php?diff=166217&oldid=166079 5* 03RocketRace 5* (+35) 10
> 1760805028 826037 PRIVMSG #esolangs :14[[07Important lesbian virtual machine14]]4 M10 02https://esolangs.org/w/index.php?diff=166218&oldid=166217 5* 03RocketRace 5* (+0) 10typo
< 1760806324 138007 :Everything!~Everythin@46.96.48.125 JOIN #esolangs Everything :Everything
> 1760808349 357109 PRIVMSG #esolangs :14[[07Vesob14]]4 10 02https://esolangs.org/w/index.php?diff=166219&oldid=166211 5* 03Ivava 5* (+550) 10
< 1760809154 597061 :somelauw!~somelauw@user/somelauw JOIN #esolangs Somelauw :somelauw
< 1760809196 792203 :somelauw!~somelauw@user/somelauw PRIVMSG #esolangs :I'm thinking about some language ideas
< 1760809294 39176 :somelauw!~somelauw@user/somelauw PRIVMSG #esolangs :I like stack based languages but noticed that comparison operators like > and != drop the items compared. Would it perhaps make sense to leave them on the stack, so you don't need to duplicate them?
< 1760809612 63336 :Sgeo!~Sgeo@user/sgeo JOIN #esolangs Sgeo :realname
< 1760810116 709759 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :maybe it makes sense to drop the top item but not the bottom one
< 1760810129 182603 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :because you're often comparing to a constant
< 1760810166 130111 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :thinking about it, variable-based languages also drop on comparison (if I do a>b I have to write the names of a and b again if I want to use them again)
< 1760810229 108228 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :x86-64 SIMD programming is interesting because although it has traditional comparison operators, it also has min/max and those are normally more useful
< 1760810281 803293 :somelauw!~somelauw@user/somelauw PRIVMSG #esolangs :True, x > 0 ... (and now i probably want to just drop 0)
< 1760810382 572153 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :actually it's interesting to think about why you're comparing, especially when using an array paradigm rather than imperative paradigm
< 1760810399 450411 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :is it for control flow? or are you trying to do a filter?
< 1760810419 988817 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :in imperative languages the two operations are the same but the "correct" way to implement them is very different in machine code
< 1760810503 67693 :somelauw!~somelauw@user/somelauw PRIVMSG #esolangs :I was thinking mostly about flow control. I haven't thought about filtering yet
> 1760810623 75862 PRIVMSG #esolangs :14[[07Vesob14]]4 10 02https://esolangs.org/w/index.php?diff=166220&oldid=166219 5* 03Ivava 5* (+2498) 10
> 1760810664 324398 PRIVMSG #esolangs :14[[07Vesob14]]4 10 02https://esolangs.org/w/index.php?diff=166221&oldid=166220 5* 03Ivava 5* (+3) 10
< 1760811043 112615 :somelauw!~somelauw@user/somelauw QUIT :Remote host closed the connection
< 1760811125 553055 :somelauw!~somelauw@i5231.upc-i.chello.nl JOIN #esolangs * :somelauw
< 1760811129 544022 :somelauw!~somelauw@i5231.upc-i.chello.nl CHGHOST ~somelauw :user/somelauw
< 1760811189 772266 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :somelauw: Think of stack operators as generalizations of functions. A comparison function might take two arguments and return one argument. The rest of the stack is just along for the ride.
> 1760811298 670888 PRIVMSG #esolangs :14[[07Vesob14]]4 10 02https://esolangs.org/w/index.php?diff=166222&oldid=166221 5* 03Ivava 5* (+43) 10
< 1760811324 528828 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Also, because we have words like dup, it's easy to mistakenly think that every value is copyable. But that's not always the case! Plenty of low-level languages like Factor can have resources on the stack which shouldn't be dup'ed.
< 1760811479 298695 :somelauw!~somelauw@user/somelauw PRIVMSG #esolangs :well in that view, dup would be an operator to somewhat explicitly pass a parameter to functioo
< 1760811507 625404 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Yeah! Have you seen quotations, as in Factor or Joy?
< 1760811514 610579 :somelauw!~somelauw@user/somelauw PRIVMSG #esolangs :I would expect everything to be more or less dupable/copyable indeed
< 1760811571 588720 :APic!apic@apic.name PRIVMSG #esolangs :cu
< 1760811600 720382 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Peace.
< 1760811616 120546 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :somelauw: You might get a kick out of a classic H. Baker paper about copying stacks: https://plover.com/~mjd/misc/hbaker-archive/ForthStack.html
< 1760811649 76700 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :That one is usually paired with another paper about Lisp which you can skip: https://plover.com/~mjd/misc/hbaker-archive/LinearLisp.html
> 1760811715 339767 PRIVMSG #esolangs :14[[07Vesob14]]4 10 02https://esolangs.org/w/index.php?diff=166223&oldid=166222 5* 03Ivava 5* (+100) 10
< 1760811754 793709 :somelauw!~somelauw@user/somelauw PRIVMSG #esolangs :i'm more familiar with forth, factor than joy
< 1760811945 359939 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :somelauw: Anyway, there *is* an answer to your initial question. Let's say that a Forth implementation is either "push/enter" or "eval/apply". In a push/enter Forth, we call functions by passing the entire stack; the function is responsible for popping stuff from the stack. In an eval/apply Forth, we call functions by asking the function for its arity, popping the stack ourselves, and invoking the function as a native call.
< 1760811959 296417 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :It turns out that eval/apply is faster for real-world languages: https://simonmar.github.io/bib/papers/eval-apply.pdf
< 1760812013 413370 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :So if we have a native comparison operation like > and we are doing eval/apply then we will call > by popping the stack twice, doing a native call of > using registers and leaving the result in a register, and finally pushing the result back to the stack.
< 1760812050 436410 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Top-of-stack optimizations apply here; if we have a unary call and top-of-stack register then we only have to swizzle registers before and after the native call.
< 1760812105 397698 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I guess I shouldn't say "real-world". I mean "higher-order"; I mean languages with quotations.
> 1760812112 762827 PRIVMSG #esolangs :14[[07Vesob14]]4 10 02https://esolangs.org/w/index.php?diff=166224&oldid=166223 5* 03Ivava 5* (+15) 10
< 1760812813 555735 :somelauw!~somelauw@user/somelauw QUIT :Ping timeout: 264 seconds
< 1760812851 302271 :somelauw!~somelauw@user/somelauw JOIN #esolangs Somelauw :somelauw
< 1760813165 442289 :somelauw!~somelauw@user/somelauw PRIVMSG #esolangs :i would expect an optimizer to inline both push/enter and eval/apply anyway
< 1760813696 971901 :somelauw!~somelauw@user/somelauw QUIT :Remote host closed the connection
< 1760813989 66253 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Ah, they don't understand yet. That's fine; there's no rush.
< 1760814200 295352 :somelauw!~somelauw@2001:1c00:b80f:f100:ac6d:fc9a:1e33:4bf7 JOIN #esolangs * :somelauw
< 1760814200 382378 :somelauw!~somelauw@2001:1c00:b80f:f100:ac6d:fc9a:1e33:4bf7 CHGHOST ~somelauw :user/somelauw
< 1760814390 183362 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :somelauw: A Sufficiently Smart Compiler could inline both when doing whole-program compilation, yes. But note that the typical Forth is incrementally compiled, and also that it's usually threaded; threaded Forths must be push/enter in order to let user-defined words have variable arity.
< 1760814395 295226 :myname!~myname@152.53.22.209 QUIT :Quit: WeeChat 4.7.0
< 1760814432 609864 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :What the Simons showed is that eval/apply is preferable when doing whole-program compilation, given that the compiler might not know the arity of all words at compile time.
< 1760814453 765299 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Unrelated: Anybody else reading the most recent Smalltalk-on-filesystem paper? https://programmingmadecomplicated.wordpress.com/wp-content/uploads/2025/10/onward25-jakubovic.pdf
< 1760814916 615655 :Riviera!Riviera@user/riviera JOIN #esolangs Riviera ::)
< 1760815582 929944 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :somelauw: I'll have to check Comun, I think it might have an optimization where some operations have a variant that keeps the bottom argument on the stack, but you access it through peephole optimization instead of a named primitive
> 1760815679 375872 PRIVMSG #esolangs :14[[07Special:Log/newusers14]]4 create10 02 5* 03Esolangist 5* 10New user account
< 1760815853 741676 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I don't have it documented for Cammy, but operations in the stack machine are "term" if they only operate on top of stack. Cammy's tuples are packed, so dup is term; overall 33 ops are term and 19 are not. Arithmetic, comparisons, case analysis, floating-point are all term. The idea is that an op is term iff there's an efficient machine op capturing it; term ops are what the low-level machine does.
> 1760815871 828570 PRIVMSG #esolangs :14[[07Esolang:Introduce yourself14]]4 10 02https://esolangs.org/w/index.php?diff=166225&oldid=166166 5* 03Esolangist 5* (+197) 10/* Introductions */
< 1760815896 768627 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :This isn't compatible with the standard unpacked untyped view of memory in Forth though.
> 1760815905 951945 PRIVMSG #esolangs :14[[07Language list14]]4 M10 02https://esolangs.org/w/index.php?diff=166226&oldid=166208 5* 03Ractangle 5* (+11) 10/* Non-alphabetic */
< 1760815985 688879 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :eek, I still can't read Comun's source code. it's written in a style that's somehow transparent and opaque at the same time
< 1760816297 370177 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I feel like there's something significantly different between "x inputs, y outputs" stack-based systems, and Underload's where the amount of stack consumed can be condiional and it's reasonabe to do things like storing lists splatted on the stack
< 1760816335 449977 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess this is, in a sense, the same "unbalanced loop" phenomenon as in BF – Underload lets you write a loop that changes the stack height at every iteration
< 1760816435 308910 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: In Cammy's case, it's an explicit papering-over of what the CAM can do. The CAM can do things like unwind a packed list onto the stack or pop the stack until a sentinel is reached; it's only like five opcodes maybe. But Cammy can't express either of those things; indeed Cammy can't actually access CAM's stack.
< 1760816523 684678 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :But that's rather because I *wanted* that separation of concerns, for speed; optimizing a sequence of term ops is straightforward and RPython's JIT emits really tight code in those situations. It would usually hurt speed to let the user interrupt that with an expensive list-unpacking loop.
< 1760816540 290008 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :now I'm thinking about Mini-Flak, which is powered by two stacks but one of them has stack height which is lexically tied to the nesting level of the programming source (i.e. push and pop instructions have to nest correctly as though they were brackets, and this nesting has to be consistent with the control flow instructions too)
< 1760816547 883126 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :this would be sub-TC if not for the fact that it has bignums
< 1760816591 950482 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right, having a restrictive programming language is good for optimisation purposes
< 1760816622 370738 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I am hoping that my next "big" programming project will be a language which I try to restrict as much as possible while still making it practically useful, in order to enable very powerful optimisations
< 1760816654 682606 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :except not pure-functional as that's been done already
< 1760816746 513500 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I'm not entirely sure, but I think Comun doesn't have the optimization that I mentioned, but in any case, a forth-like stack interpreter could have something like this
< 1760816748 442240 :somelauw!~somelauw@user/somelauw QUIT :Remote host closed the connection
< 1760816788 662597 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(by programming project I mean programming language project, not programming in general)
< 1760817049 536359 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: I was actually vaguely thinking about a retro programming language that pretends to be a hypothetical low memory (early 2000s) programmable calculator, where the programs are written in a stack language of the kind that allows functions that push or pop a variable amount, but the calculator interface can dynamically translate the program to one of those BASIC-like languages with infix
< 1760817055 535082 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :operations, and where the program isn't easy to translate to that it would put PUSH statements or POP functions into the BASIC
< 1760817106 827926 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :in a way I'm sad that there's rarely any reason to do extreme memory-saving programming nowadays
< 1760817136 491725 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I suspect even microcontrollers have more RAM than they used to – the ones I worked with had approximately 100 bytes of memory but I suspect modern ones have a lot more
> 1760817140 160497 PRIVMSG #esolangs :14[[07User talk:/w/wiki/index.php/Talk:index.php/Main page14]]4 10 02https://esolangs.org/w/index.php?diff=166227&oldid=163224 5* 03Esolangist 5* (+461) 10added commands yay
< 1760817152 789827 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :100 bytes of RAM, that is, they had a few kilobyte of EEPROM
< 1760817162 879520 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :by the way, something like that exists, it's called S-lang, it's a macro language that pretends to have a normal infix syntax but can also do variable pushes or pops
< 1760817187 23270 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: I'm thinking of 2048 bytes of RAM because that's what my programmable calculator has
< 1760817199 517296 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :a SHARP EL-5120
< 1760818371 332304 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :I think they still make "small" (in the 64-256 bytes) RAM microcontrollers too, like the venerable PIC family ones. But it's also definitely easy to find ones with orders of magnitude more, too.
< 1760818414 208344 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :The RP2040 has 264 kB of RAM, for example.
< 1760818497 377193 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :And the new one they made for Pico 2, the RP2350, it's apparently got about double that (520 kB).
< 1760818519 678982 :somelauw!~somelauw@i5231.upc-i.chello.nl JOIN #esolangs * :somelauw
< 1760818748 223495 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I'm saddened to realise that most modern programmers would have no idea how to fit a program's memory usage into 520 kB
< 1760818797 722993 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :our typical tools for programming don't make that very easy – lots of heavy libraries and dependencies
< 1760818873 513625 :zzo38!~zzo38@host-24-207-46-238.public.eastlink.ca PRIVMSG #esolangs :Many programs can use much less than that. But, I think you are right unfortunately many modern programmers (although not all) use too many dependencies and use too much memory and other stuff.
< 1760818948 306367 :zzo38!~zzo38@host-24-207-46-238.public.eastlink.ca PRIVMSG #esolangs :The MESH:Hero game engine uses an internal RPN code (which is saved to disk in binary format) but when editing, it is converted to infix notation. However, as far as I know, there is no PUSH and POP in the source format.
< 1760819054 954776 :zzo38!~zzo38@host-24-207-46-238.public.eastlink.ca PRIVMSG #esolangs :I think many programmable calculators (like you mention) do too; I have TI-92 and I have managd to confuse it with the use of an undocumented error code which seems to be used internally when you push ON to stop a user program that is currently running.
< 1760819815 866130 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Depends on how much time I'm given. I was eager to write BASIC on a TI-84, but only in high school when there wasn't anything else to do.
< 1760820011 769939 :Everything!~Everythin@46.96.48.125 QUIT :Quit: leaving
< 1760820454 715143 :somelauw!~somelauw@i5231.upc-i.chello.nl QUIT :Remote host closed the connection
> 1760820620 909463 PRIVMSG #esolangs :14[[07Special:Log/newusers14]]4 create10 02 5* 03Mouse 5* 10New user account
> 1760820988 140865 PRIVMSG #esolangs :14[[07Dt14]]4 10 02https://esolangs.org/w/index.php?diff=166228&oldid=163446 5* 03C++DSUCKER 5* (+64) 10
> 1760821354 122571 PRIVMSG #esolangs :14[[07Esolang:Introduce yourself14]]4 10 02https://esolangs.org/w/index.php?diff=166229&oldid=166225 5* 03Mouse 5* (+80) 10/* Introductions */
< 1760821407 80538 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: that's why I'm sometimes thinking of how I can optimize an interpreter of a high-level language such that you can spawn many interpreters and each one consumes very little memory other than read-only memory that can be safely shared between interpreters and processes
< 1760821487 480964 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :it can be hard because even a fresh interpreter will have a lot of built-in objects (eg. built-in types and functions) that some programs can modify, but you have to encode them in such a way that you can store modifications but you don't need a huge read-write table in the common case when there are no or very few modifications
< 1760821508 58816 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :and there's of course a tradeoff between this and the speed of operations
> 1760821542 836690 PRIVMSG #esolangs :14[[07Esolang:Introduce yourself14]]4 M10 02https://esolangs.org/w/index.php?diff=166230&oldid=166229 5* 03Mouse 5* (+76) 10/* Introductions */
< 1760821546 841381 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :so this is hard especially for existing languages like javascript or python or ruby that allow such modifications
< 1760821598 797226 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :easier for a new language that you design specifically for this
< 1760821657 910740 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: I'm wondering how that would work in terms of how it's seen by the kernel – are the high-level interpreters coroutines in a single thread, threads in a single process, or separate processes?
< 1760821735 843967 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: that's an open question, but I think that doesn't much influence what I want to optimize
< 1760822151 321514 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :most likely a combination where there can be more than one process, but also a process can have multiple interpreters
< 1760822228 339540 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :and the shared content is either linked into the executable or mmapped from some read-only files
< 1760822924 115240 :sprout!~sprout@84-80-106-227.fixed.kpn.net PRIVMSG #esolangs :ah, we just had a similar discussion
< 1760822940 538379 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :And y'all aren't talking about the Smalltix paper, right?
< 1760823019 66193 :sprout!~sprout@84-80-106-227.fixed.kpn.net PRIVMSG #esolangs :coroutines can be implemented in various manners, and even the definition of a coroutine can be stretched to something along a light-weight tread
< 1760823023 694777 :sprout!~sprout@84-80-106-227.fixed.kpn.net PRIVMSG #esolangs :*thread
< 1760823039 47159 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Like, a Nix store would be an example of that sort of "read-only memory" if we're thinking of files as objects rather than inert; an immutable object could be compiled to bytes which are content-addressed in the Nix store rather than ambient in the local environment. Indeed, this is basically how Monte uses Nix as a package manager!
< 1760824409 892301 :FireFly!~firefly@glowbum/gluehwuermchen/firefly PRIVMSG #esolangs :korvo: smalltix paper?
< 1760824535 143730 :FireFly!~firefly@glowbum/gluehwuermchen/firefly PRIVMSG #esolangs :oh, found it in the scrollback
> 1760825027 957760 PRIVMSG #esolangs :14[[07Smoothbrain14]]4 M10 02https://esolangs.org/w/index.php?diff=166231&oldid=166047 5* 03Ashli Katt 5* (+9) 10/* Program */ Add "However," to make the paragraph flow smoother
< 1760825291 96940 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Yeah. I'm at Section 11, thinking about performance. The real issue is something not mentioned in the paper: context switches and non-VDSO syscalls.
< 1760825430 555862 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :korbo: my problem is mutable objects, in a language that has lots of mutable objects.
< 1760825511 800687 :ais523!~ais523@user/ais523 QUIT :Quit: quit
< 1760825736 260650 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :b_jonas: Right. And similarly I know that modern Smalltalks do *not* have perfectly serialized transactions for every invocation. Something has to give; we can only sync a disk like 20 to 100 times per second.
< 1760825996 396360 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :One possible abstraction is array-style parallel programming. It's usually safe to interrupt programs like sed or jq midway through some data, for example. This would require the `bind` script to clean up after each process, which is plausible.
< 1760826040 784732 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :They mention FUSE but I'm thinking more about tmpfs. The kernel's directory-management logic is not too bad, given that we usually want to contend on multiple resources at once.
< 1760826105 204907 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Maybe asynchrony is the main feature here. This setup naturally gets concurrency as long as the kernel is correct. In that sense it's not too different from systems like Scala's Akka where each actor is too large to transparently migrate but its underlying storage can be persistent.
< 1760831965 66039 :Sgeo!~Sgeo@user/sgeo QUIT :Ping timeout: 250 seconds