#language #user #scheduling #write #io #io-uring #focus

bin+lib seaslug

experimental language with a focus on terseness, testability, high quality scheduling and completion-based IO

1 unstable release

0.0.0 Mar 15, 2021

#75 in #focus

GPL-2.0 license

190KB
4.5K SLoC

seaslug

small, beautiful, knowable, DOESN'T EXIST YET LOL

  • non-turing complete, verified terminating code placed into well-defined interfaces similar to Erlang behaviors
  • strongly typed, powerful inference to minimize type noise
  • a runtime built from the beginning to take advantage of io_uring, immutable messaging, optimistic STM, and generally paying attention to modern scheduling research
    • the runtime tracks overall utilization and saturation
    • aims to maximize utilization while minimizing saturation (writes before reads before accepts for sockets)
    • infers contention causality encountered in the optimistic state layer and learns to step in as a traffic director, letting users avoid thinking about contention
  • leans into linear logic to enforce error handling in well-specified hierarchies, similar to Erlang supervisors
  • interpreter-first, but the interpreter itself aims to compile quickly so you can produce static optimized native binaries
  • built-in first-class fault injection, fuzzing, network simulation, model-based testing, and concurrent interleaving exploration
  • rich built-in data structures, first-class json support, first-class binary parsing support
seaslug should be an ideal language for building
  • databases
  • distributed systems
  • servers
  • scalable concurrent systems
  • multitenant infrastructure
seaslug does not aim to excel at
  • building your own data structures
  • intensive numerical processing
  • short-lived CLI applications
  • embedded programming
ideas that may or may not lead to seaslug
  • erlang's terseness, behaviors, focus on immutable message passing, explicit supervisor hierarchies, pattern matching, binary parsing capabilities
  • celf's nondeterminism and linear logic
  • constraint handling rules's verification opportunities
  • prolog's declarative debugging, tables, provability of pure code
  • total functional programming's restrictions on recursion and looping
seaslug is written in rust and takes advantage of things like
  • io_uring
  • simdjson
  • sled
  • software transactional memory

Dependencies

~2.2–4.5MB
~73K SLoC