https://github.com/sno2/bsn
An implementation of the Bussin esoteric language
https://github.com/sno2/bsn
esoteric-language interpreter programming-language zig
Last synced: 10 months ago
JSON representation
An implementation of the Bussin esoteric language
- Host: GitHub
- URL: https://github.com/sno2/bsn
- Owner: sno2
- License: mit
- Created: 2023-11-21T03:39:48.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-02T15:58:46.000Z (over 1 year ago)
- Last Synced: 2025-03-27T14:52:07.983Z (10 months ago)
- Topics: esoteric-language, interpreter, programming-language, zig
- Language: Zig
- Homepage: https://trybsn.vercel.app
- Size: 4.81 MB
- Stars: 8
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

An implementation of @face-hh 's
[Bussin esoteric language](https://github.com/face-hh/bussin) written in Zig
with a custom bytecode virtual machine and component-based mark and sweep
garbage collector.
## Playground
The playground is available at https://trybsn.vercel.app. It is the easiest way
to play around with this interpreter.
## Known Issues
- The playground does not maintain extra newlines when transforming between the
BS and BSX formats.
- The playground is not interactive. We currently run programs and display the
output from `println` calls at the end of the program. Although, after the
[self-hosted Zig compiler implements async again](https://github.com/ziglang/zig/issues/6025),
I will use it to add streaming IO.
- Printing circular objects causes stack overflows.
```
lit a be {} rn
a.a be a
"Stack overflow"
waffle(a)
```
- Parsing errors can have incorrect formatting in some cases.
- Functions do not support capturing locals, but globals do work.
```
bruh foo() {
lit a be 24
bruh bar() {
a
}
bar
}
"This will fail because it does not know about 'a'"
foo()()
```
- All other TODOs in the code.
## License
[MIT](./LICENSE)