Skip to content

Dodo 0.1.2

Choose a tag to compare

@Jotrorox Jotrorox released this 14 Sep 16:24
· 81 commits to main since this release

Dodo 0.1.2 adds a portable and hosted standard library, native testing, source
debugging, richer editor support, and Windows compiler downloads. The language
specification remains version 0.1.

  • Add portable core and explicit allocation packages: uninitialized storage,
    memory and slice utilities, caller-backed arenas and pools, and owned boxes.
  • Add byte I/O, formatting, binary views, UTF-8 text, numeric parsing, and
    separately selected growing buffers and strings. Keep allocation explicit.
  • Add portable collections, binary64 mathematics, hashing/checksums, and
    duration/calendar/clock contracts without requiring an OS, global allocator,
    or libm. Generate mathematical constants independently and use integer-based
    floating-point formatting.
  • Add independently selected Linux/Windows filesystem, process, environment,
    native thread, and synchronization packages, with owned resources, bounded
    output collection, and deterministic guard/thread destruction.
  • Add checked cross-thread transfer/sharing contracts, native callback
    specialization, and integer atomics with validated memory orderings and
    target capabilities.
  • Add portable network addresses and DNS, Linux/Windows TCP/UDP/resolver
    providers, verified OpenSSL TLS, bounded incremental HTTP/1.1, streaming
    clients and servers, routing/middleware, and optional rooted static files.
    Transport, TLS, clocks, allocation, and execution remain independently selected.
  • Add checked owner-bound storage views and shared arena capabilities. Preserve
    access modes through container borrowing, reject mutable reborrows through
    shared aggregates, and prevent callbacks from retaining borrowed request
    storage through external-reference assignments.
  • Add dodo test with recursive discovery, @test and test_ functions,
    companion test files, assertions, filtering, ignored tests, captured output,
    timeouts, and isolated native execution. Report assertion values and source
    locations, and execute Markdown fences marked dodo test.
  • Add source debugging with -g, source breakpoints, and local variables.
    Report hosted runtime failures with their check and source location, and
    support non-returning board failure handlers through --panic-hook.
  • Add LSP completion, definition, references, rename, signature help, canonical
    document formatting, multiple diagnostics, configured compilation targets,
    and a reproducible stdio responsiveness benchmark.
  • Publish the Dodo VS Code extension with syntax highlighting, snippets, LSP
    integration, configuration, and restart/output commands as an installable VSIX.
  • Use main.dodo in the current folder for dodo run, dodo check, and
    dodo compile; keep build as an alias for compile. Explicit project
    folders select main.dodo; default outputs use the project folder name.
    Shared code uses ordinary imported subfolders, without a manifest or package
    manager. Update existing scripts that relied on checking an entire directory
    as one CLI package.
  • Share payload storage across enum and Result alternatives and initialize
    only the active payload. Compile explicit wrapping arithmetic directly,
    remove unreachable functions, and emit separate function/data sections.
  • Specify implemented language contracts and implementation-defined choices,
    with expanded conformance tests and updated reference documentation.
  • Replace external JSON, LSP protocol, and file-URI dependencies with internal
    implementations. Rename the Cargo package to dodo; the library remains dodoc.
  • Publish x86-64 Linux and Windows compiler archives with embedded LLVM,
    examples, documentation, and dependency notices, including the embedded
    standard library's Unicode notice. The Windows build uses static runtimes.
    Remove the separate checksum manifest.
  • Use the official LLVM 22.1.8 Linux archive without a Z3 dependency. Cache
    native build dependencies, retry downloads, and improve Windows extraction
    and release smoke tests.
  • Expand verification with native tests and executable documentation at -O0
    and -O3, debugger and VS Code sessions, Windows/Wine programs, published hash
    vectors, MPFR references, deterministic models, parser mutation/fragmentation,
    independent network/TLS peers, and WebAssembly/Cortex-M0 object generation.

The compiler still implements a subset of the language design. See the
implementation status and limits
for supported behavior and remaining work.

Install

Download Requirements
dodo-0.1.2-x86_64-unknown-linux-gnu.tar.gz x86-64 Linux with glibc 2.39 or newer, such as Ubuntu 24.04.
dodo-0.1.2-x86_64-pc-windows-msvc.zip x86-64 Windows. LLVM and the compiler's C/C++ runtimes are statically linked.
dodo-vscode-0.1.2.vsix VS Code 1.91 or newer and a separately installed Dodo 0.1.2 compiler.

Both compiler archives include examples, documentation sources, installation instructions, and dependency license notices. LLVM and the Dodo standard library are embedded. Checking source and emitting objects need no external compiler tools. Building or running native programs requires a C toolchain: cc on Linux, or Clang plus Visual Studio C++ Build Tools and a Windows SDK on Windows (DODO_CC=clang or --linker clang).

Install the VS Code extension with code --install-extension dodo-vscode-0.1.2.vsix, or use Extensions: Install from VSIX....

See the installation guide, first program, testing guide, and editor setup. Other systems can build from source.

Validation

Release CI passed on the v0.1.2 commit:

  • 512 Rust tests, including compiler, runtime, standard-library, and debugger tests; formatting and Clippy with warnings denied.
  • 95 native Dodo tests and executable documentation at each of -O0 and -O3, with two explicitly ignored tests per run.
  • VS Code grammar tests, VSIX packaging, and integration against the built compiler.
  • Windows/Wine standard-library execution, Linux release linkage and fully static build checks, clean Ubuntu runtime smoke tests, and extracted Windows archive smoke tests.
  • Release prerequisite/linkage-script tests and generated mathematical constants.

The documentation build also passed, including generated PDF/text checks and 2,344 internal link, asset, and search-target checks across 33 pages.

All changes since v0.1.1