Skip to content

Specification §24

What is still open

language-design.md §24 · 22 lines · 2 min read

These points either have a decided direction but pending fine design, or have not been defined yet. (Closed and moved to their sections over the sessions: Strings in section 16; FFI with C in section 17; supervisors, links and monitors in section 8; inline assembly in section 18; observability in section 19; compiler extensions in section 20; tools in section 22; ABI in section 23; process reference and registration in section 3.)

Standard library (stdlib), post-design, guided by the slow-core

Section titled “Standard library (stdlib), post-design, guided by the slow-core”

The stdlib is not core nor language, it is a library, and that is why it grows after the design of the language, guided by the slow-core (section 1: the language grows in libraries, not in syntax). There is no language decision here; what follows is a provisional map of modules to guide the implementation (a sketch to refine when it is built, not a contract).

The modules already committed by the design (cited in their sections) and the obviously necessary ones, by domain:

  • Fundamentals: mem (allocators / MemoryManager, section 5), runtime (introspection and tracing, section 19), arch (architecture constants at comptime, section 18).
  • System and IO: io (readers/writers), fs (filesystem), os (env, args, exit, OS processes), time (clocks, durations, timers).
  • Concurrency and network: net (channels over the network, section 4); processes and channels are already the language’s, so here lives only what touches the OS and the network.
  • Text: strings (utilities over string, section 16), fmt (formatting / Display, section 16), unicode (codepoint and grapheme helpers), locale (i18n).
  • Data and encoding: encoding (the Serializable interface and formats, section 4), json, bytes, collections (maps, sets and structures beyond the builtin).
  • Numeric and crypto: math, crypto, hash.
  • Tools: test (the testing framework, section 22).
  • FFI (import namespaces, not ordinary modules): c (from @cimport, section 17), js (from @jsimport, section 20).
  • UI (markup): the runtime of the UI extension (fine reactivity, islands), which lives under the markup half, section 20.

This is a starting point, not a specification: the stdlib is actually designed in the post-core phase.