Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DCDart

A native systems language with Dart's syntax and type system, compiled AOT to native code — no VM, no interpreter, no JIT, no tracing GC. Memory is managed by ARC with compile-time elision. Cycle collection remains planned. C ABI at every boundary.

Everything buildable — compiler pipeline, runtime, examples, tests, and the full design-decision record — lives under core/. Start there.

Setting it up, or testing it in VS Code: core/docs/testing-setup.md — prerequisites, the fresh-clone step that a clone cannot build without, a first program end to end, and the two behaviours (byte-counted .length, trapping arithmetic) that surprise people.

Install v0.1.3 (macOS, Linux, Windows)

brew tap dotcorr/tap
brew trust --formula dotcorr/tap/dcdart
brew install dcdart
# Upgrading: brew update && brew upgrade dcdart

Homebrew supports macOS ARM64 and Linux x86-64/ARM64 (glibc 2.39+). Windows x86-64 uses the official Scoop bucket:

scoop bucket add dotcorr https://github.com/DotCorr/scoop-bucket
scoop install dotcorr/dcdart

The release includes native archives and checksums. iOS device, iOS Simulator, and Android ARM64 are compilation targets; see mobile support and installation prerequisites.

On macOS/Linux, compile a program (pass the shipped prelude — its path is matched lexically, so spell it the same in your source's import):

dcc build --mode bare --target host main.dart -o main.o --emit-header main.h \
  --prelude "$(brew --prefix)/opt/dcdart/libexec/core/runtime/dc-core-bare/prelude.dart"

A Dart SDK 3.12.2 on PATH (or DCDART_DART) is required for the kernel-frontend stage.

Website and browser playground

Website · Playground · Documentation

The playground lets visitors edit a single DCDart source file, compile it with the actual hosted DCDart/LLVM pipeline, and execute the resulting WebAssembly locally. The prelude is supplied automatically; callable functions currently use u64/f64 arguments and returns. Website sources and reproducible runtime builds live in site/.

Current correctness and limitations

v0.1.3 adds checked atomic alignment, valid packed-memory alignment, error-propagation cleanup, and the Windows x64 Result calling convention. See the language audit for regression coverage and remaining safety, ABI, and language gaps.

The two numbers that define the project

  1. ARC overhead vs. C. Target ≤10% geometric mean. Gated at M3.
  2. Undefined symbols in a @bare object file. Target: zero, checked mechanically on every change.

License

DCDart is released under the Apache License 2.0 with LLVM exceptions — the same licensing terms the LLVM project uses, chosen deliberately for a compiler: the Apache grant covers patents necessarily infringed by the toolchain itself, and the LLVM-style exception guarantees that any program compiled with dcc is entirely yours — no conditions of the license attach to the output, object form, or binaries you build and distribute. Copyright © 2026 DotCorr.

Status

M0 (Kernel IR seam) and M1 (type model) are done and verified end to end. M2 (ARC) has real allocation/retain/release, aliasing, function calls, heap-typed signatures and fields, @owned parameters, a destructor cascade, weak references, a first elision pass, verified recursion, scalar local reassignment, and real while-loop control flow — all backed by a real dcc build → freestanding link → run cycle, not stubs. See core/README.md for the current target/ADR count and core/docs/known-gaps.md for what's honestly still missing.

About

A native systems language with Dart syntax and types, compiled ahead of time to native code. ARC with compile-time elision, a C ABI at every boundary, freestanding targets for kernel work.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages