All Projects → return → malbolge

return / malbolge

Licence: GPL-3.0 license
A Malbolge implementation and interpreter in Rust.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to malbolge

Hackide
hackIDE is an online code editor, compiler and interpreter based on Django, powered by HackerEarth API! Go, hack it!
Stars: ✭ 242 (+952.17%)
Mutual labels:  interpreter
clox
A virtual machine and a tree-walk interpreter for the Lox programming language in C89 🌀
Stars: ✭ 38 (+65.22%)
Mutual labels:  interpreter
sigmastate-interpreter
ErgoScript compiler and ErgoTree Interpreter implementation for Ergo blockchain
Stars: ✭ 56 (+143.48%)
Mutual labels:  interpreter
Gobasic
A BASIC interpreter written in golang.
Stars: ✭ 253 (+1000%)
Mutual labels:  interpreter
StepULC
Efficient and single-steppable ULC evaluation algorithm
Stars: ✭ 15 (-34.78%)
Mutual labels:  interpreter
sturdy
Sturdy is a library for developing sound static analyses in Haskell.
Stars: ✭ 49 (+113.04%)
Mutual labels:  interpreter
Mond
A scripting language for .NET Core
Stars: ✭ 237 (+930.43%)
Mutual labels:  interpreter
molt
Embeddable TCL Interpreter for Rust applications
Stars: ✭ 86 (+273.91%)
Mutual labels:  interpreter
wasm
A fast Pascal (Delphi) WebAssembly interpreter
Stars: ✭ 40 (+73.91%)
Mutual labels:  interpreter
kiwi-8
CHIP-8 interpreter for Windows and MacOS
Stars: ✭ 16 (-30.43%)
Mutual labels:  interpreter
Xstate
State machines and statecharts for the modern web.
Stars: ✭ 18,300 (+79465.22%)
Mutual labels:  interpreter
pythonvm-rust
An incomplete stackless interpreter of Python bytecode, written in Rust.
Stars: ✭ 65 (+182.61%)
Mutual labels:  interpreter
lispy
LISP interpreter in Python
Stars: ✭ 31 (+34.78%)
Mutual labels:  interpreter
Go Pry
An interactive REPL for Go that allows you to drop into your code at any point.
Stars: ✭ 2,747 (+11843.48%)
Mutual labels:  interpreter
malbolge-lisp
A lightweight (350MB) Lisp interpreter in Malbolge Unshackled, often dubbed the hardest turing complete programming language.
Stars: ✭ 348 (+1413.04%)
Mutual labels:  malbolge
Openj9
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Stars: ✭ 2,802 (+12082.61%)
Mutual labels:  interpreter
LLVM-JVM
[W.I.P] A Just-In-Time Java Virtual Machine written in Haskell
Stars: ✭ 22 (-4.35%)
Mutual labels:  interpreter
snabl
a Lispy Forth in C++
Stars: ✭ 21 (-8.7%)
Mutual labels:  interpreter
Tagha
Minimal, low-level, fast, and self-contained register-based bytecode virtual machine/runtime environment.
Stars: ✭ 101 (+339.13%)
Mutual labels:  interpreter
fundot
The Fundot programming language.
Stars: ✭ 15 (-34.78%)
Mutual labels:  interpreter

Malbolge Implementation in Rust

('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"
`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>

What on earth?

That right there is a Hello World in Malbolge.

What you are looking at is a language which is something worse than all languages out there. It's more esoteric than Brainfu*k and it is even harder to read and write than its friend Befunge.

Malbolge is a self-modifying programming language that is made to be deliberately difficult to program in and close to impossible to read. You could easily mistake it for a crypto-system although some researchers have made the case for it. But you probably could not have determined that this code alone prints out 'Hello!'

(=<`#9]76Z{z2V0/S-Qr*)M:,+*)('&%$#"!~}|{z(Kw%$t"Vq0iAm,,j<h'`%

Hello!

This implementation is written in pure Rust and a port from the reference C and Java implementations and is able to execute programs written in Malbolge.

This is a Malbolge implementation of the UNIX cat program.

(=BA#9"=<;:3y7x54-21q/p-,+*)"!h%B0/.
~P<
<:(8&
66#"!~}|{zyxwvu
gJ%

There is also a macro available to pass in a raw Malbolge binary using a raw string literal.

This is the same program that prints Hello!.

malbolge!(r#"(=<`#9]76Z{z2V0/S-Qr*)M:,+*)('&%$#"!~}|{z(Kw%$t"Vq0iAm,,j<h'`%"#);

See the examples for more non-trivial malbolge programs.

Programming in Malbolge

Well I don't know why anyone would want to do this, but I guess you really want to know so here it goes.

It is known for years that Malbolge is close to impossible to program in. The first valid program in Malbolge was found via trial and error for 8 years with brute-force until the above 'Hello World' program was able to run.

Why?

Because I simply can and you should too.

Examples

See the examples folder for running these programs through the interpreter.

Building

Build by using this command.

cargo build

Testing

cargo test

License

GPLv3+

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].