Soplang 3.6
Language, standard library, application, concurrency, and tooling additions through Soplang 3.6.
Soplang 3.6
Soplang 3.6.0 brings the work developed since the published 3.0.1 release into one release. It retains Somali source syntax and supports both Cranelift JIT execution and LLVM native builds.
Language and runtime
- Tracing garbage collection, isolated execution contexts, catchable structured
errors,
tuur, guaranteeddhammeecleanup, stack traces, and precise source locations. - Escaped, raw, multiline, and interpolated strings; value formatting; direct calls of returned and stored functions; default, variadic, and named arguments.
- Direct iteration and iterator protocols, immutable tuples, sets, byte arrays, optional and union annotations, and typed collections. Text, list, object, and numeric libraries include the operations documented in language reference.
Files, networking, and applications
- Text and binary files, directories, paths, JSON, CSV, regular expressions, timestamps, environment variables, arguments, and child processes.
- HTTP and HTTPS clients, DNS, TCP, UDP, WebSocket clients, and HTTP servers.
- Modules with explicit exports and cached initialization; Git and local path dependencies pinned by a root lock file.
- A bundled
webmodule with routes, middleware, request parsing, responses, templates, static files, cookies, sessions, TLS, and an application test client. schema.sopand generated data clients for SQLite, PostgreSQL, CockroachDB, MySQL, MariaDB, MongoDB, and SQL Server. The data API supports validation, typed filters, pools, transactions, and additive migrations.
Concurrency
Tasks use sug(task) and channels to coordinate asynchronous file, network,
and timer work. HTTP servers handle multiple requests, stream bounded bodies,
support WebSocket connections, and drain active work during shutdown. Request
failures remain isolated from the server. See the
concurrency model and
HTTP server API for exact behavior and limits.
Tools and packages
The CLI accepts English and Somali command names, including run/fuli,
build/dhis, check/hubi, fmt/habee, test/tijaabi, and
doc/duk. Project initialization, package management, source debugging,
profiling, documentation generation, formatting, and source coverage are
available. The language server and VS Code extension provide editing support.
Installed native packages include the compiler, LLVM object generation, a
platform linker, and the Soplang runtime needed for soplang build. Building a Soplang program
does not require a separate Rust or Clang installation. Building Soplang itself
from source still requires its Rust and native build dependencies. The generated
executable runs without Soplang or its source files beside it and targets the
same operating system and architecture as the compiler package.
Keep the package's lib/soplang directory beside its executable. See
installation for layouts and platform requirements.
Read the Soplang 3.6 release article for an introduction to these additions and the verification record for platform checks.
Compatibility and limits
Existing 3.0 programs retain their syntax and aliases. Some new standard library names have compatibility spellings; consult the linked language references for their current canonical forms. Database servers, network services, and TLS certificates remain external resources when an application uses them. The data layer does not implement joins, relations, arbitrary SQL, destructive migrations, or schema drift repair.