Skip to content

Dodo 0.1.3

Choose a tag to compare

@Jotrorox Jotrorox released this 16 Sep 07:44
· 18 commits to main since this release

Dodo 0.1.3 adds simpler printing and web application APIs, concurrent HTTPS,
checked mutable slice splitting, reference collections, and improved editor
navigation. The language specification remains version 0.1.

  • Add postfix ! to unwrap a Result or panic on error, preserving ? for
    propagation. Shorten hello world to a single console call in fn main().
  • Add safe hosted console input/output and compiler-checked print, println,
    and printf for primitives and custom printable values. Check literal format
    strings and heterogeneous arguments at compile time.
  • Add bounded UTF-8 console and file helpers, command output capture,
    environment conveniences, native clocks, and runnable standard-library
    onboarding guides.
  • Add checked core/slice.split_at_mut with disjoint mutable views, nested
    splitting, and source lifetimes preserved through moves and returns.
  • Support checked shared-reference collection elements and shared-arena owned
    strings. Add scoped try_update mutation for vector elements and hash-map
    values, retaining ownership and allocator dependencies on success or error.
    Result-bearing and exclusive-reference elements remain restricted.
  • Fix ownership tracking across break and continue, including loop-carried
    borrows, moved values, and reachable exits.
  • Add bounded hosted HTTP/HTTPS clients and fluent app.new() and portable
    application.builder() APIs. Provide method shortcuts, named handlers,
    middleware, route diagnostics, text/HTML/JSON/redirect responses, request
    accessors, explicit rejections, and owned in-process test responses.
  • Add std/web/app.Server with bounded default storage, grouped limits and
    timeouts, custom buffers, cooperative cancellation, and explicit serial or
    concurrent execution. The bounded HTTP reactor supports connection reuse and
    ordered pipelined requests.
  • Add std/web/https with bounded PEM loading, file-specific startup diagnostics,
    and run_with(address, https.files(certificate, key)). Support concurrent TLS
    handshakes and requests, HTTPS keep-alive, and graceful connection shutdown;
    TLS remains an explicit import.
  • Keep large internal function arguments and results in caller-owned storage
    and compact aggregate copies before LLVM lowering, reducing memory use for
    composed web applications. Exported and C signatures stay stable. Allow up
    to 4,096 generic specializations with a separate nesting limit of 64.
  • Open bundled standard-library definitions as read-only sources in VS Code,
    with hover and navigation inside them. Refresh diagnostics and navigation
    when imported files change, preserving unsaved buffers. Add printing
    completions, signature help, and snippets.
  • Make frontend tests and Clippy runnable without LLVM through
    --no-default-features. Expand native Windows filesystem, process, console,
    thread, synchronization, and networking coverage at -O0 and -O3. Give
    refused-connection checks a fresh deadline and actionable error diagnostics;
    separate HTTP protocol-error checks from short timeout-test deadlines.
  • Migrate the backend from Inkwell to llvm-sys 231.0.0 and LLVM 23.1.1; source
    builds now use LLVM_SYS_231_PREFIX. Update Rust to 1.98.1, refresh Rust/npm
    dependencies, and adopt TypeScript 7. The VS Code extension requires
    VS Code 1.137 or newer.
  • Slim compiler archives to the executable, installation instructions, and
    license notices; documentation and examples remain available online and in
    the source repository. Fix Windows LLVM support-library and linker handling.
  • Remove std/text_unicode and its Unicode data license notice; text trimming
    uses Text.trim_ascii. Remove the Zed extension and Tree-sitter grammar.

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.3-x86_64-unknown-linux-gnu.tar.gz x86-64 Linux with glibc 2.39 or newer, such as Ubuntu 24.04.
dodo-0.1.3-x86_64-pc-windows-msvc.zip x86-64 Windows. LLVM and the compiler's C/C++ runtimes are statically linked.
dodo-vscode-0.1.3.vsix VS Code 1.137 or newer and a separately installed Dodo 0.1.3 compiler.

The compiler archives contain the executable, installation instructions, and dependency license notices. LLVM and the Dodo standard library are embedded. Documentation and examples are available online and in the source repository.

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.3.vsix, or use Extensions: Install from VSIX....

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

Compatibility

The language version remains 0.1. Source builds require Rust 1.98.1 and LLVM 23.1.1 (LLVM_SYS_231_PREFIX). The removed std/text_unicode module is replaced by ASCII trimming through Text.trim_ascii; Zed and Tree-sitter integrations are no longer included.

Validation

Release CI passed on the release commit:

  • Formatting and Clippy with warnings denied, including the LLVM-free frontend configuration.
  • Compiler, standard-library, runtime, debugger, HTTP/HTTPS interoperability, ownership, and LSP tests.
  • Native Dodo tests and executable documentation at -O0 and -O3.
  • VS Code grammar tests, VSIX packaging, and integration against the built compiler.
  • 26 native Windows executions across 13 filesystem, process, console, thread, synchronization, and networking fixtures, plus extracted Windows release smoke tests.
  • Windows/Wine standard-library execution, Linux linkage checks, fully static builds, and clean Ubuntu runtime smoke tests.

The documentation build also passed, including generated PDF/text checks and 3,667 internal link, asset, and search-target checks across 43 pages. Documentation sources are unchanged from that validated commit.

All changes since v0.1.2