|
1 |
| -# puke |
| 1 | +# seaslug |
2 | 2 |
|
3 |
| -a language that is happy and eager to suck at many things in pursuit of |
4 |
| -low-boilerplate, low-noise, highly reliable, high performance state machines |
5 |
| -with enforced strict error handling and built-in fault injection. |
| 3 | +small, beautiful, knowable, DOESN'T EXIST YET LOL |
6 | 4 |
|
7 |
| -puke may become a language that encourages users to write |
8 |
| -code that is usable by others and respectful to themselves |
9 |
| -by providing superior scheduling and concurrency facilities |
10 |
| -compared to what is generally available in current industrial |
11 |
| -languages. |
| 5 | +* non-turing complete, verified terminating code placed into well-defined interfaces similar to Erlang behaviors |
| 6 | +* strongly typed, powerful inference to minimize type noise |
| 7 | +* a runtime built from the beginning to take advantage of io_uring, immutable messaging, optimistic STM, and generally paying attention to modern scheduling research |
| 8 | + * the runtime tracks overall utilization and saturation |
| 9 | + * aims to maximize utilization while minimizing saturation (writes before reads before accepts for sockets) |
| 10 | + * infers contention causality encountered in the optimistic state layer and learns to step in as |
| 11 | + a traffic director, letting users avoid thinking about contention |
| 12 | +* leans into linear logic to enforce error handling in well-specified hierarchies, similar to Erlang supervisors |
| 13 | +* interpreter-first, but the interpreter itself aims to compile quickly so you can produce static optimized native binaries |
| 14 | +* built-in first-class fault injection, fuzzing, network simulation, model-based testing, and concurrent interleaving exploration |
| 15 | +* rich built-in data structures, first-class json support, first-class binary parsing support |
12 | 16 |
|
13 |
| -##### puke should be an ideal language for building |
| 17 | +##### seaslug should be an ideal language for building |
14 | 18 |
|
15 | 19 | * databases
|
16 | 20 | * distributed systems
|
| 21 | +* servers |
| 22 | +* scalable concurrent systems |
17 | 23 | * multitenant infrastructure
|
18 | 24 |
|
19 |
| -##### puke does not aim to excel at |
| 25 | +##### seaslug does not aim to excel at |
20 | 26 |
|
21 | 27 | * building your own data structures
|
22 | 28 | * intensive numerical processing
|
23 | 29 | * short-lived CLI applications
|
24 | 30 | * embedded programming
|
25 | 31 |
|
26 |
| -##### ideas that may or may not lead to puke |
| 32 | +##### ideas that may or may not lead to seaslug |
27 | 33 |
|
28 |
| -* erlang's terseness, focus on immutable message passing, explicit supervisor hierarchies, pattern matching |
29 |
| -* celf's nondeterminism and linear logic |
| 34 | +* erlang's terseness, behaviors, focus on immutable message passing, explicit supervisor hierarchies, pattern matching, binary parsing capabilities |
| 35 | +* celf's nondeterminism and linear logic |
| 36 | +* constraint handling rules's verification opportunities |
30 | 37 | * prolog's declarative debugging, tables, provability of pure code
|
31 |
| -* total functional programming |
32 |
| -* unison's effect systems |
33 |
| -* rust's restricted linear typing |
34 |
| - |
35 |
| -##### puke should excel at |
36 |
| - |
37 |
| -* testability |
38 |
| - * built-in network simulation, fail-points, concurrent interleaving exploration, model-based testing support |
39 |
| -* optimistic concurrency |
40 |
| - * shared mutable state regulated by optimistic software transactional memory, letting users avoid |
41 |
| - thinking about data races |
42 |
| -* scheduling |
43 |
| - * the runtime tracks overall utilization and saturation |
44 |
| - * aims to maximize utilization while minimizing saturation (writes before reads before accepts for sockets) |
45 |
| - * infers contention causality encountered in the optimistic state layer and learns to step in as |
46 |
| - a traffic director, letting users avoid thinking about contention |
47 |
| -* rich built-in data structures, first-class json support, first-class binary parsing support |
| 38 | +* total functional programming's restrictions on recursion and looping |
48 | 39 |
|
49 |
| -##### puke is written in rust and takes advantage of things like |
| 40 | +##### seaslug is written in rust and takes advantage of things like |
50 | 41 |
|
51 | 42 | * io_uring
|
52 | 43 | * simdjson
|
53 | 44 | * sled
|
54 | 45 | * software transactional memory
|
55 |
| - |
56 |
| - |
57 |
| -##### puke will have a gross name until it becomes something that is not actually gross |
0 commit comments