Post B6epX2RtpozcLHuXJo by vii@dsmc.space
(DIR) More posts by vii@dsmc.space
(DIR) Post #B6eitNzlhvlTrISh84 by sun@shitposter.world
2 likes, 2 repeats
i vibe coded a #lisp machine (well, scheme)it compiles to wasm and runs in the browser.took about a week of work.#programming #ai
(DIR) Post #B6ejRSn4Ny7AZnltC4 by sun@shitposter.world
3 likes, 0 repeats
you can use it to make reactive webapps written in scheme.it also implements a real (if, simple) preemtive process scheduler on top of a single emulated cpu
(DIR) Post #B6ejU7uCUYrIfhNPiS by HatkeshiatorTND@annihilation.social
1 likes, 0 repeats
@sun mccarthy is up in heaven laughing. truly the language of ai.
(DIR) Post #B6ejcLQ28JlEtpBWV6 by sun@shitposter.world
2 likes, 0 repeats
To be clear, this emulates a very special CPU architecture that has tagged type memory; the os implements capabilities; the scheme acts like a real historic lisp machine but with multiple processes and capabilities as first class considerations to protect you from malicious untrusted code
(DIR) Post #B6ejiDfBsgASaF4lf6 by sun@shitposter.world
0 likes, 0 repeats
source will be provided when I have a working windowing system and file management.
(DIR) Post #B6emPP57VIbuMBvKbI by whiteline@shitposter.world
0 likes, 0 repeats
@sun yes, using tagged memory is very easy and effective on x64 since you get 8 different tags to play with, for non-word-sized-things all you need is an object header tag and you can know what each single bit does in memory as long as you traverse it in the direction from header to datait does restrict tagged unsigned numbers to 61 bits of precision and signed ones to 60, but that hardly mattersalso allows you to get away with having cons cells just be two naked words next to each other, at least as long as you also have a tracing garbage collectordoes the system restrict the user from creating symbols at runtime? this seems like the one major thing if you want to sandbox a lisp
(DIR) Post #B6emPPHAmUFexZYxO4 by whiteline@shitposter.world
1 likes, 0 repeats
@sun i don't vibecode my lisp vm/compiler but i do extensively use gemini to find primary sources and sometimes to navigate codebases, it's been extremely helpful in this
(DIR) Post #B6emunIBXTLAQF0F8a by vii@dsmc.space
0 likes, 0 repeats
@sun r7rs spec?
(DIR) Post #B6emunbKOIeXNbxWyW by sun@shitposter.world
0 likes, 0 repeats
@vii yes but it extends it
(DIR) Post #B6emvMQYuJpzOMBvYO by vii@dsmc.space
1 likes, 0 repeats
@sun I have been developing my own language, too, though I may have been overambitious. It hasn’t collapsed, this iteration though, so I think I have something. The code is bad but https://github.com/elizafairlady/ish if you would like to see it.
(DIR) Post #B6emvuuWhQ0aL8TKym by sun@shitposter.world
0 likes, 0 repeats
@vii I do!
(DIR) Post #B6eoKxo5AWemW1xtj6 by sun@shitposter.world
1 likes, 0 repeats
@whiteline there's kernel mode and user mode and user mode doesn't have a global symbol table
(DIR) Post #B6epX2RtpozcLHuXJo by vii@dsmc.space
1 likes, 0 repeats
@sun It’s a scheme under the hood; I have written a VM for it but I threw it out because I wanted to perfect the syntax and the macro hygiene and find my perfect core of primitives before optimizing. The best “documentation” are the integration tests, that’s where you can see the language in action.
(DIR) Post #B6epY8w3CjW0kUXZku by whiteline@shitposter.world
1 likes, 0 repeats
@sun my implementation will be agent based once it's finished, meaning only the node environment will be able to provide anything like global symbols, to facilitate access to shared named resources, on an agent level it's all lexical
(DIR) Post #B6fQfJS4g5FD3kYH2G by fluffy@fsebugoutzone.org
1 likes, 0 repeats
@sun neat!
(DIR) Post #B6fVnjLcmSR5ShMsrI by mangeurdenuage@shitposter.world
0 likes, 0 repeats
@sun >to protect you from malicious untrusted codeConsidering who the people who made those languages/architectures/designs they most probably wanted that to be able to have maximum freedom-flexibility while avoiding errors, which results in also security enhancing.Also, this is what the hurd does, except it's still bound to hardware errata.