Jimmy Miller
Projects

My projects are mostly experiments. I am more interested in exploring the ideas behind things to learn than I am in writing production-ready software. Some eventually graduate to be tools I use every day. But even those are mostly things I find useful, not for others.

beagle

Dynamic, mostly-functional, compiles straight to machine code. (pre-alpha)

Beagle is my programming language I've been working on for a while now. It is slowly approaching a stage I'm proud of. The code snippet on the right might seem unremarkable, but those socket/read calls don't block. Concurrency in this language is fully controllable, yet there is no function coloring.

beagleexamples/echo_server.bg
1use beagle.socket as socket
2
3fn main() {
4 let listener = socket/listen("0.0.0.0", 8080)
5 println("Echo server listening on port 8080")
6
7 socket/on-connection(listener, fn(conn) {
8 loop {
9 let data = socket/read(conn, 4096)
10 if data == "" || data == null {
11 socket/close(conn)
12 break(null)
13 } else {
14 socket/write(conn, data)
15 }
16 }
17 })
18}
Two snippets, one runtime
01
Algebraic effects

Built-in algebraic effects make it easy to control and test IO.

02
Live coding

Redefine functions, structs, and enums while your code is running.

03
Async without function coloring

Delimited continuations give you transparent asynchrony.

04
Compiled

No VM, no bytecode — straight to machine code.