Last inventory: 2026-07-17 · product mako0.2.1 (CARGO_PKG_VERSION).
Unique Mako surface · pack/pull · map/slice/bag monomorphs · package-per-directory · const-fn depth (match/while/for/strings) · suite 338 test programs · The Mako Book.
Book: The Mako Book · Guide: GUIDE.md · Identity: IDENTITY.md · Pain points: PAIN_POINTS.md · Build: BUILD.md · Stdlib: STDLIB.md · Roadmap: ROADMAP.md · Changelog: ../CHANGELOG.md · Release: RELEASE.md.
| Scope | Approx. |
|---|---|
| Product version | 0.2.1 |
| MVP / usable language | Core compiler/runtime scope is exercised; this is not a production-readiness claim |
| STATUS north-star | Tracked scope is explicit; residuals below remain |
| Mako identity (preferred syntax) | Checklist complete — IDENTITY.md; not a maturity score |
| Go/Rust pain coverage | ~80% strong rows — PAIN_POINTS.md |
| Dual-form coverage (optional sugar) | ~94% — GO_SYNTAX_CHECKLIST.md |
| Standard library | ~98% of target areas Done (Wave 9; not every symbol or integration) |
| Piece | Status |
|---|---|
The Mako Book (docs/book/ · mdBook book.toml + chapters) |
Done |
| Accuracy pass: README / GUIDE / STATUS / ROADMAP / howto index | Done |
| Collections surface docs (ERGONOMICS · LANGUAGE · BUILTINS · book ch03/ch14/ch15 · howto/10 · llms*) | Done — full map/slice/bag surface + demand-driven monomorphs |
| Piece | Status |
|---|---|
mako version / --version with OS/arch |
Done |
Grouped import ( / { + fmt |
Done |
Packs & pulls (pack/pull flair, always qualify, import/package dual, internal rewrite) |
Done |
Low-ceremony ergonomics doc + tests (print poly, == strings, match routes, maps/slices) |
Done — ERGONOMICS.md |
| Path-style import blocks (nested std, vendor/, module=, aliases, blank-line groups) | Done |
| Speed / concurrency / parallelism north star (SPEED.md) | Done (product bar) |
fan + Mako fn lambdas (block body codegen + types) · crew/fan tests |
Done |
CLI help polish (build/run/check/test flag docs; version near top) |
Done |
VS Code mako-native launch configs through LLDB/cpptools |
Done |
mako pkg audit offline advisory and license policy checks |
Done |
mako doc API markdown, runnable examples, and search index |
Done |
mako test --coverage plus fuzz/property/snapshot/mock/fixture categories |
Done |
mako profile wall-clock compile/run profile reports with JSON output |
Done |
| Release archives include the full internal docs tree and top-level release notes | Done |
| Area | Status |
|---|---|
RE2 backrefs \1–\9 · \p{L/N} ASCII · [:lower:]/[:upper:]/[:punct:] |
Done |
JFIF grayscale encode (jpeg_encode_gray_jfig + jpeg_is_jfif) |
Done |
| Reflect type schema registry from codegen constructors | Done |
| SMTP STARTTLS soft path + AUTH PLAIN; OpenSSL probe | Done |
str_cut / str_count |
Done |
UTF-8-aware regexp \p{...} for common scripts/categories + simple lookahead |
Done |
| Tests | goext_wave8_test.mko, goext_wave9_test.mko |
| Check | Result |
|---|---|
cargo build --release |
PASS |
map[K]Option[T] / map[K]Result[T,E] |
PASS — map_option_result_test (11 tests) |
| Security residuals (at-rest, limits, cancel, mTLS, SCRAM cbind) | PASS — security_residuals_test |
| Security product polish (path size, PEM, CSR/self-signed, prom/trace, SCRAM-PLUS helpers) | PASS — security_product_test |
Backend ergonomics already on tip (for…in range, fmt_sprintf*, match/switch, chan[Struct], POD kick) |
Documented — ERGONOMICS.md · SPEED.md |
Struct update S { ..base, field: v } + POD enum kick / chan[Enum] |
Done — struct_update_test |
First-class fns · f"…" · field defaults · chan[tuple] |
Done — lang_ergonomics_test |
chan_len / chan_cap on any chan[T] (struct/tuple/string rings) |
Done — typecheck + codegen dispatch · ptr/str runtime helpers |
Portable timeouts (send/recv_timeout, join_deadline, deadline_remaining_ms) |
Done — timeout_portable_test |
Crew child error prop (first_err / wait) · detach · actor state |
Done — crew_error_prop_test · detach_test · actor_test |
| Observability depth (OTLP JSON, profile snapshot, stack_trace, crash_report, PGO/LTO) | Done seed — observability_depth_test |
Capturing closures (POD + string + struct env via MakoFn) |
Done seed — capturing_closure_test · struct_capture_test |
Kick first-class fn values across crew (Send) |
Done seed — kick_fn_test |
f-string format specs (flags + # - 0, hex/oct/bin, float e/f/g) |
Done seed — fstring_fmt_test |
fn_drop / env free + debugger/task inspect seeds |
Done seed — fn_drop_debug_test |
| Storage page + WAL seeds | Done seed — storage_wal_test |
| Hash index + store txn + snap predict seeds | Done seed — store_index_test |
| Domain tracks (btree/LSM/MVCC/rollback/gfx/AI/debug frame) | Done seed — domain_tracks_test (no SIPREC/WebRTC) |
| Storage depth (btree disk, SST, pcache, MVCC version reclamation, SIMD) | Done seed — storage_depth_test |
| LSM compact · store WAL recover · hot-reload mtime | Done seed — domain_tracks_test (lsm_compact, store_recover_wal, hot_reload_*) |
| Multi-level LSM (L1–L3) · page-backed btree | Done seed — domain_tracks_test (lsm_compact_down, pbtree_*) |
| Storage polish (bloom · range · disk page manager) | Done seed — domain_tracks_test (bloom_*, btree_range/sst_range, pman_*) |
| Domain handles as params/returns/struct fields | Done — Bloom/PageMan/Predict/MultiMap map to C pointers · TestDomainHandleFieldsAndFns |
| Storage P0–P4 product surface | Done — range grow+iter · multimap · str keys · pman bulk · btree_save checksum · registry · append2 · TestDomainStoragePolishP0toP4 |
SQL str4 empty-bind arity + multi-arg sql_query_str2/3/4 |
Done — sql_str4_empty_bind_test · sql_query_str_multi_test |
| Zero-copy string regions (language) | Done — str_slice_eq / str_slice_index / str_at_eq / str_byte_at · str_slice_zc_test |
| Debugger depth (line BP · frames · async parent · snapshot) | Done seed — fn_drop_debug_test |
| OTLP protobuf + HTTP exporter client | Done seed — trace_export_otlp_pb · otlp_export_traces_* · observability_depth_test |
| Sampling CPU profiler | Done seed — profile_sample_* · profile_sample_test |
| DAP JSON + pprof-text + tid samples | Done seed — residual_seeds_test · profile_sample_test |
DAP handle + mako dap CLI · profile HTTP routes |
Done seed — dap_handle_request · /debug/pprof/* |
| Cross-target FreeBSD/RISC-V dry-run | Done seed — scripts/cross-target-seed.sh · CI workflow |
| Comptime const if / comparisons | Done seed — const_fn_test (abs_const / clamp_const) |
| Hot-reload swap/stamp · predict service | Done seed — residual_seeds_test |
| DAP --stdio · profile-serve · plugin live reload · soft FB | Done seed — CLI + residual_seeds_test |
| MSI/notarize/brew/winget publish seeds | Done seed — scripts + package-seed.yml · WiX skeleton |
| gfx_poll · GPU backend availability · netcode deltas | Done seed — residual_seeds_test |
| plugin_open/call/close · hot_reload_unwatch | Done seed — residual_seeds_test · domain_tracks_test |
| Full unicode + utf8 package | Done seed — UCD props/case + encode/decode · std/unicode · unicode_full_test |
| List[T] + richer collections | Done — List/[]T + set/heap/ring/stats · std/collections · collections_*_test |
| Plugin product package | Done — live dylib load/call/reload/manifest · std/plugin · plugin_product_test |
| Full time package | Done — calendar/parse/format/duration · std/time · time_full_test |
| Full syscall package | Done — portable OS primitives · std/syscall · syscall_full_test |
| YAML + TOML encoding packages | Done — flat/section config · std/encoding/{yaml,toml} · yaml_toml_test |
| Product version 0.1.6 | Done — tree-wide version sync |
| Product version 0.1.7 | Done — freeze codecs/combinators/packages wave |
| Product version 0.1.8 | Done — speed wave (wyhash, f-string stack, select condvar, HTTP 1024) |
| Product version 0.1.9 | Done — generic structs/enums, interface bounds, iterator/closure seeds |
Generic structs struct Pair[T] + multi-param |
Done — monomorph Pair__int · generic_struct_test |
Generic enums enum MyBox[T] + match |
Done — generic_enum_test |
Interface bounds fn f[T: I](…) |
Done — structural · generic_bounds_test · bad/generic_bound_fail |
| Nested generics / multi-instantiation | Done — generic_adversarial_test |
Iterator Type_next → for seed |
Seed — by-value self limit · iterator_test |
| Mutable closure capture cells | Seed — mutable_closure_test |
| CBOR + MessagePack binary | Done — encode/decode subset · std/encoding/{cbor,msgpack} · cbor_msgpack_test |
| List combinators (map/filter/fold style) | Done — int mono helpers · cbor_msgpack_test |
| Avro binary + GraphQL/protobuf packages | Done — std/encoding/{avro,protobuf} · std/graphql · avro_graphql_tz_test |
| Named timezone offsets | Done seed — fixed zones · time_offset_named / format_offset |
| Installer UX (manifest + doctor + Windows) | Done seed — install-manifest.json · doctor fields · install.ps1 |
Actor spawn_cap + interface on T : I sugar |
Done seed — actor_test · iface_on_iface_test |
| Error chain peel + tag helpers | Done seed — error_unwrap / root / as_tag / has_tag · error_chain_test |
fallthrough switch dual |
Done seed — fallthrough_test |
| Richer errors beyond stringly defaults | Done seed — Result[T, Enum] · wrap chain · std/errors |
| Package-per-directory (multi-file pack) | Done — merge all units · same pack name · pkg_per_dir_test · examples/pkg_per_dir |
| Unbuffered rendezvous channels | Done — chan_new(0) / chan_open[T](0) · chan_rendezvous_test |
| Implicit interface method sets (Go-like) | Done — on T { fn m } / T_m implements I · iface_implicit_test |
| Actor int message payload | Done seed — receive Inc(delta) / actor_pack · actor_test |
| Const-fn match + while depth | Done seed — int match / bounded while · const_fn_test |
| Const-fn for (count + C-style) | Done seed — for i in n / for i in range n / C-for · const_fn_test |
| Const-fn break/continue | Done seed — bare break/continue in const loops · const_fn_test |
| Const string seed | Done seed — literals / + / str_len / == · const_fn_test |
| Const fn string params/returns | Done seed — shout / greet / len_greet · const_fn_test |
SIP library (platform builtins + std/sip) |
Done — RFC 3261/3581 Via/RR/NAT, Digest HA1, framing, SDP rewrite |
| SIP zero-copy header/method views | Done — sip_header_view / sip_method_eq / sip_header_eq |
| ShareInt capture (shared mut via RC handle) | Done seed — share_capture_test |
| Packaging seeds (deb/rpm/winget/matrix/homebrew) | Done seed — scripts + packaging/ |
Book samples mako check / run |
PASS — docs/book/examples/book_*.mko |
mako test examples/testing |
PASS — 338 passed, 0 failed (2026-07-17) |
| GC removal regression checks | PASS — removed builtin and legacy [package] gc = true both fail, including isolated cache paths |
| Speed gate | PASS — normal ≤2.0× and strict ≤1.5× Rust gates; final measured ratios 0.21×–0.65× |
| Leba downstream smoke | PASS — current compiler builds/checks Leba; compiled doctor reports 0 errors |
if init; cond { } + both-branches-return body |
Done — examples/testing/if_init_test.mko |
Go switch/case/default (value, expr-less, init) |
Done — examples/testing/switch_test.mko |
Go fallthrough (case body merge) |
Done seed — examples/testing/fallthrough_test.mko |
Positional struct literals Point{1, 2} / Point{} |
Done — examples/testing/struct_positional_test.mko |
go f() → kick onto enclosing crew |
Done — examples/testing/go_stmt_test.mko |
Compound assign += … ++ -- (ident/field/index) |
Done — examples/testing/compound_assign_test.mko |
Go for forms (C-style, while, infinite, range) |
Done — examples/testing/for_forms_test.mko |
Parallel binding/assignment (a, b = b, a swap) |
Done — examples/testing/parallel_assign_test.mko |
if as an expression (let x = if c { a } else { b }) |
Done — examples/testing/if_expr_test.mko |
Argon2id password hashing (crypto.password_hash) |
Done (OpenSSL) — examples/testing/password_hash_test.mko |
UDP proxy routing (game_udp_sender_addr / send_to) |
Done — examples/testing/udp_proxy_test.mko |
| Sendable sync handles across kick (CMap/Mutex/RWMutex/AtomicInt) | Done — examples/testing/kick_sync_test.mko |
PBKDF2-HMAC-SHA256 (crypto.pbkdf2, SCRAM primitive) |
Done — examples/testing/pbkdf2_test.mko |
Per-connection HTTP/2 state (http2_conn_new/use/free) |
Done — examples/testing/http2_multiconn_test.mko |
HTTP/2 read request + http2_response (full request/response cycle) |
Done — fixed inverted stream parity; examples/testing/http2_request_test.mko |
| HPACK decode for real clients (Huffman, indexed names, full static table) | Done — curl --http2 verified; examples/testing/hpack_decode_test.mko · examples/h2_dynamic_server.mko |
HTTP/2 reverse proxy (http_forward upstream + relay) |
Done — curl→proxy→backend verified; examples/h2_reverse_proxy.mko |
TCP pool + http_forward_full + http_proxy_raw |
Done — pool reuse, status/body, raw pump; examples/testing/proxy_pool_test.mko |
| HTTP parse object + chunked decode | Done — http_parse / http_decode_chunked |
| Nonblocking connect + fd splice/copy | Done — tcp_connect_nb / tcp_fd_copy / tcp_splice |
Socket tuning (reuseport, buffers, accept4) |
Done |
Async TLS accept (tls_accept_start / handshake step) |
Done — event-loop friendly surface |
| Multi-certificate TLS SNI | Done — exact + longest left-most wildcard selection; opt-in live handshake coverage in examples/testing/tls_sni_live_test.mko |
| HTTP/2 stream multiplexing (ready queue, 64 slots) | Done — http2_next_ready_stream / stream_take / stream_body |
| HTTP/2 hardened path (dual FC, SETTINGS, auto WU, PADDED, overflow hard-fail) | Done — http2_conn_* · examples/testing/http2_prod_test.mko |
HTTP/2 TLS one-shot (tls_serve_h2_routes) |
Demo/smoke only — production path is tls_server_new + http2_conn_* |
| HTTP/3 server surface (UDP bind/poll/stream) | Done — h3_server_* (quiche when linked) |
HTTP/3 hardened path (64 KiB bodies, no silent truncate, accessors, h3_response) |
Done — examples/h3_server.mko · h3_server_test.mko · smoke |
FS / storage surface (atomic_write, mkdir_all, remove_all, dio CLOEXEC, mmap) |
Done — examples/testing/fs_storage_test.mko |
| Low-level networking (peer/local addr, UDP sender, write_all/read_n, shutdown, CLOEXEC) | Done — examples/testing/net_lowlevel_test.mko |
IPv6 dual-stack listen/connect + Happy Eyeballs tcp_connect |
Done — examples/testing/net_ipv6_he_test.mko |
Low-latency clocks (mono_* / deadlines / sleep_ns / spin_until) |
Done — examples/testing/time_latency_test.mko |
| LLM programming (chat/tools/SSE/JSON extract, OpenAI-compatible HTTPS) | Done — examples/testing/llm_test.mko · examples/llm_chat.mko |
| LLM stream transport + embeddings + error/retry helpers | Done — llm_chat_stream / llm_embed* / llm_is_error / llm_chat_retry |
| SQL string params + last_insert_id / rows_affected (SQLite + Postgres) | Done — examples/testing/sql_programming_test.mko |
SQL multi-row cursor + bulk first-column (sql_query_rows*, sql_query_col_*) |
Done — examples/testing/sql_rows_test.mko |
| SIP/SDP/RTP platform (parse/build; build stacks in Mako — not a softswitch) | Done — examples/testing/sip_test.mko · examples/sip_ua.mko · std/sip |
SRTP crypto building blocks (aes_ctr, hmac_sha1 / hmac_sha1_raw) |
Done — examples/testing/crypto_srtp_blocks_test.mko (HMAC RFC 2202) |
TLS client socket API (tls_client_new / tls_connect + SNI/VERIFY_PEER) |
Done — examples/testing/security_crypto_test.mko |
Secrets helpers (secret_len / secret_eq_str) + HKDF-SHA256 |
Done — RFC 5869 A.1 vector; security_crypto_test.mko |
| Strong structured logging (JSON/logfmt, levels, multi-field, file, redaction) | Done — examples/testing/strong_log_test.mko · runtime/mako_log.h |
| WebSocket RFC 6455 (client/server frames, mask, frag, ping/pong, close codes) | Done — runtime/mako_ws.h · examples/testing/ws_api_test.mko |
| GPU AI seed (OpenCL multi-vendor + host; matmul/relu/bias/softmax f32) | Done — runtime/mako_gpu.h · gpu_seed_test.mko (NVIDIA/AMD/Intel/Apple) |
| Local models (safetensors load, .makomodel, author MLP, linear HF layout) | Done — runtime/mako_model.h · model_weights_test.mko · examples/model_mlp.mko |
| GGUF F32/F16 load + attention/LN/GELU/SiLU + vocab tokenizer | Done — model_load_gguf, gpu_attention_f32, tok_* · ai_depth_test.mko |
| Multi-head attention + GGUF Q4_0/Q8_0 dequant + BPE tokenizer | Done — gpu_mha_f32, quant GGUF, tok_encode_bpe · ai_depth_test.mko |
| Email / SMTP (MIME builder, session, STARTTLS, AUTH PLAIN, mock e2e) | Done — mako_mail.h · mail_smtp_test.mko · examples/mail_program.mko |
| Go-style templates (if/range/with/define, HTML escape) | Done — mako_template.h · template_test.mko · examples/template_demo.mko |
| fmt / print packages (Sprintf/Print/Errorf, multi-arg) | Done — mako_fmt.h · std/fmt · std/print · fmt_print_test.mko |
| Hex/dec/bin/oct format + parse (bases 2–36, %#x/%08x) | Done — format_int_* / parse_int_* · fmt_print_test.mko |
| Language residuals wave 40 (deep Send/race, NLL, patterns, stability, GC, reflect, JPEG baseline, Unicode) | Done — lang_residuals_test.mko · nll_multi_label_test.mko · api_stable_test.mko |
Language residuals wave 41 (Ok(Some) non-generic, exotic ?, race stack, UCD/PCRE depth) |
Done — lang_residuals_test.mko |
| UUID v4/v5/v7 + ULID (Copy POD, kick/Send, parse polish) | Done — runtime/mako_uuid.h · uuid_test.mko · std/uuid |
| Speed gate vs Rust (fib/slice/map ≤2×) | PASS — ./scripts/bench-gate.sh |
| Speed audit: safe release bounds; empty str singleton; map 75% load | Done — see PERFORMANCE.md |
| Map set_take (no string-key clone) + HTTP zero-copy views into raw | Done — map_take_http_test.mko |
Header/Content-Type interning + respond_json static CT |
Done — runtime mako_http_intern_* |
| HTTP/2 DATA auto-split (≤16384) + proxy/map free safety | Done — http2_data_frame split; http2_prod_test |
chan_str_send_take / try_send_take (no string clone) |
Done — chan_string_test.mko |
| Proxy splice polish (256 KiB + sendfile file→socket) | Done — mako_proxy.h tcp_fd_copy |
| Proxy edge cases (headers, chunked, 204/304, pool release latency) | Done — examples/testing/proxy_edge_test.mko; docs in BUILTINS Reverse-proxy notes |
Checked integer overflow (--overflow trap, checked_*, would_overflow_{add,sub,mul}) |
Done — full wire types+codegen+runtime; overflow_shutdown_test.mko |
| Parser multi-error recovery | Done — parse_with_errors keeps following good decls (unit test); examples/bad/multi_error.mko |
| Graceful shutdown builtins | Done — signal_on_term / server_drain / register_listener |
| Leak scopes | Done — leak_scope_enter / exit / leak_check |
| Trace id / spans | Done — trace_id / begin / end / log |
mako dev hot reload seed |
Done — mtime poll rebuild+rerun |
Result[int, Enum] typed errors + match |
Done — result_enum_test.mko |
const fn compile-time fold |
Done — const_fn_test.mko |
crew.drain + evloop_shutdown |
Done — crew_drain_test.mko |
| NLL const-fold comparisons | Done — more int/ident folds for dead edges |
| Module layout (suggested order) | Done — src/overflow.rs, recovery.rs, shutdown.rs, errors.rs, leak.rs + runtime headers |
bcrypt ($2b$) via libxcrypt (crypto.bcrypt/bcrypt_check) |
Done — verified on Linux x86_64: round-trip + distinct salts; examples/testing/bcrypt_test.mko |
SCRAM-SHA-256 core (crypto.scram_*, raw sha256/hmac, xor_bytes) |
Done — RFC 7677 vector byte-exact on Linux; examples/testing/scram_test.mko |
Native bind-address control (tcp_listen_addr) |
Done — verified on Linux: loopback-only bind, non-host IP rejected |
| TLS 1.3 termination | Verified on Linux — openssl s_client -tls1_3 → TLSv1.3 / TLS_AES_256_GCM_SHA384 |
Socket-style TLS server (tls_server_new/tls_accept/read/write/alpn) |
Done — STARTTLS-upgrade verified; examples/testing/tls_server_test.mko |
Signal hooks by name (signal_watch/fired/ignore HUP/TERM/…) |
Done — reload/shutdown verified; examples/testing/signal_test.mko |
File-system watch (watch_new/add/poll/close, kqueue+inotify) |
Done — change detection verified; examples/testing/watch_test.mko |
Contextual pack/pull/switch/go (usable as identifiers) |
Fixed — no longer reserved words |
C keyword / stdlib-name identifiers (switch, read, time, …) emit valid C |
Fixed — codegen mangles reserved & libc names |
mako fmt doubled export on structs |
Fixed |
| The Mako Book + docs accuracy | Done |
Pack-qualified types (eng.Table annot / lit / pattern) + multi-return of structs |
Done — pack_types_test · tuple_struct_test |
| Struct eq/hash with slice/map fields (engine tables as packs) | Done — struct_slice_fields_test |
| Struct eq/hash with Option/Result/enum fields | Done — struct_slice_fields_test · lang_residuals_test |
Pack-qualified enums (eng.Red / eng.Color.Green(n) construct + match) |
Done — pack_types_test |
Maps of structs (map[int]T / map[string]T, pack types) |
Done — map_struct_test |
make(chan[Struct]) + maps_* on II/SS/struct maps |
Done — chan_make_struct_test · map_struct_test |
map[int]float / map[string]float + structural maps_equal |
Done — map_float_test · map_struct_test |
Struct/enum == != (structural) |
Done — struct_eq_test |
Float map keys (map[float]int|string|float|Struct) |
Done — map_float_test · map_struct_test |
Struct map keys (map[Point]int|string|float|bool|Struct) |
Done — map_struct_key_test |
map[Struct]Struct (named key + named value) |
Done — map_struct_key_test |
map[K]bool + []bool + map[bool]V |
Done — map_bool_test |
Enum maps + []Enum (map[K]Enum, map[Enum]V, …) |
Done — map_enum_test |
Nested slices [][]T |
Done — nested_slice_test |
map[K][]T (scalar + named keys × slice values) |
Done — map_slice_test |
Nested maps map[K]map[K2]V (depth 2) |
Done — map_nested_test |
Nested maps depth 3 map[K]map[K2]map[K3]V |
Done — map_depth3_test |
map[K][][]T (nested-slice values) |
Done — map_nested_slice_test |
Nested maps with slice values map[K]map[…][]T |
Done — map_map_slice_test |
Option[map[K]V] / Result[map[K]V] (all map kinds, match unbox) |
Done — option_map_test |
[]map[K]V and map[K][]map[…] |
Done — slice_map_test |
map[K]Option[T] / map[K]Result[T,E] (bag values) |
Done — map_option_result_test |
[]Option[T] / []Result[T,E] (bag element slices) |
Done — option_result_slice_test |
map[K][]Option[T] / map[K][]Result[T,E] |
Done — map_option_slice_test |
map[K]Option[[]T] / map[K]Result[[]T,E] |
Done — map_option_of_slice_test |
map[K](T,U) tuple values (scalar 2–3-tuples) |
Done — map_tuple_test |
| Map tuples with Struct/Enum + homogeneous 4-tuples | Done — map_tuple_struct_test |
map[K]Option[map] / map[K]Result[map] |
Done — map_option_of_map_test |
map[K]chan[T] channel values |
Done — map_chan_test |
map[K][]chan[T] slices of channels |
Done — map_slice_chan_test |
Option[chan] / map[K]Option[chan] / Result[chan] |
Done — map_option_chan_test |
Nested channel bags []Option[chan] / Option[[]chan] |
Done — map_option_chan_nested_test |
[][]chan[T] / (chan, scalar) map values |
Done — map_chan_nested_slice_tuple_test |
| 3-tuples with channel field as map values | Done — map_tuple_chan3_test |
Nested Option[Option[…]] / Result[Option[chan]] maps |
Done — map_nested_option_chan_test |
Mixed bag nests Option[Result] / triple Option / Result[Result] maps |
Done — map_option_result_nested_test |
Nested bag slices []Option[Option] / Option[[]Option] maps |
Done — map_nested_bag_slice_test |
Bag fields in map tuples (Option[T], U) / (Result[T,E], U) |
Done — map_tuple_bag_test |
| Demand-driven map monomorph emission (O(used), not N² grid) | Done — AST collection + gated helpers (1dd3ddf) |
| Nested bag slices / bag-field map tuples | Done — map_nested_bag_slice_test · map_tuple_bag_test |
len nil-safe on SI/II/SS maps (and monomorphized maps) |
Done — runtime + nested tests |
| Low-ceremony collections ergonomics | Done — ERGONOMICS.md |
| Piece | Status |
|---|---|
User generics monomorphization fn id[T](x: T) -> T |
Done |
| Generic structs / enums + interface bounds (0.1.9) | Done — see product 0.1.9 rows above |
Mako methods on Type { fn m(self) … } |
Done (desugars to Type_m) |
| Tuples + tuple patterns | Done |
export + visibility = "explicit" seed |
Done (default open) |
chan_open[T] / make(chan[T], n) (int + string) |
Done; chan_new unchanged |
#line source maps + bounds_checks = "on" profile |
Done |
| Compat policy | COMPAT.md |
| Tests | examples/testing/lang_wave10_test.mko (6 tests) |
| Piece | Status |
|---|---|
func alias for fn |
Done |
var / := short declaration |
Done |
Go method receivers func (p Point) m() int |
Done |
type Point struct { x int } (no colon) |
Done |
Params a int / a, b int (no colon) |
Done |
Bare returns func f() int |
Done |
package main clause |
Done |
Multi-return a, b := f() |
Done |
| Capitalized export (Go-style) | Done |
| Checklist with % | GO_SYNTAX_CHECKLIST.md ~78% |
| Example / tests | examples/go_style.mko, go_style_test.mko (6 tests) |
Closed this pass (gap close):
| Piece | Status |
|---|---|
| Send-like kick rules (Copy / string / chan / deep-POD struct / Option·Result·tuple of sendables) | Done — kick_send_test, POD kick waves, bad kick_array_arg / kick_non_pod |
visibility = "explicit" filters pulled symbols |
Done — examples/export_vis/ |
Ok/Err respect enclosing Result[T, E] |
Done — errors_typed_test |
chan_open int family + bool |
Done |
fan uses HW concurrency (not fixed 4 threads) |
Done |
fan on []float (mako_par_map_float) |
Done |
| ShareInt/Arena rejected across kick | Done |
scripts/bench-gate.sh vs Rust (fib/slice/map, default ≤2.5×) |
Done |
chan_open[string] + kick with chan handle |
Done |
error_context (wrap_err alias) |
Done |
mako lint --identity (dual spellings as style) |
Done |
Atomic share RC + share_set |
Done |
fan on []string (mako_par_map_str) |
Done |
error_join combine Results |
Done |
| bench-gate default ≤2.0× Rust (fib/slice/map) | Done |
| ShareInt + string kick auto-clone heap pack | Done |
bench-gate strict 1.5× (MAKO_BENCH_STRICT=1 or arg) |
Done (passes locally) |
chan_open[Struct] via MakoChanPtr heap-box |
Done |
error_tag(tag, msg) enum-like string errors |
Done |
Closed (wave 7–39): join_timeout flatten · POD kick + string fields ·
reflect_value_of N + nested POD · Result/Option deep nests · nested
None/Err edges · ? int/string/float/bool/struct/slice/map + nested ·
SOF0 header fields · jpeg_is_baseline_gray · JFIF shell probes ·
jpeg_roundtrip_ok · APP layout checks · NLL for/if/match · kick
Result/Option reject · script/category \p{…} · expanded TSan · prior work.
Wave 39 tests: examples/testing/wave39_queue_test.mko · bad
try_slice_in_void.
Pain residuals (language) — Wave 40 close: see PAIN_POINTS.md.
fan; TSan opt-in (--race). C/FFI and explicit unsafe remain outside the safe-language guarantee.Ok(Some(v)); exotic ? cross (Option→Result Err("None"), Result→Option None); generic nests (wave18+) Stdlib / product (wave 40–41):
\P/\X/\h/\R/\N — full UCD still not claimed jpeg_encode_gray_baseline / jpeg_is_baseline_huff Also: #[stable] / #[deprecated]. Mako intentionally has no tracing GC;
ownership, hold/share, and arenas are the only memory-management model.
homebrew-core publish — Formula/mako.rb.