Rak v0.7.0
Rak v0.7.0
Upgraded compiler, new key features, IDE + installer fixes.
What's new in 0.7.0
Compiler & language upgrades
- Structured errors —
catch ebinds a first-classErrorvalue with akind, source span (file:line:col),cause, context map, and backtrace. New builtins:error,err_message,err_kind,err_line,err_col,err_file,err_cause,err_context,err_with_context(interpreter + VM). - True async concurrency —
await_all,select(race),timeout,task_group,async_sleep,async_yield, and deferredasync fnbodies running on a bounded worker pool (thousands of lightweight ops). Added the shared Tokio runtime (async_rt.rs) with a non-Tokio counting semaphore. - Streaming — pull-based
Value::Streamwithstream_from_array,stream_map,filter,take,stream_next,collect,read_lines, andtcp_stream; lazily consumed byfor. - CLI — optional
fn main(argv) -> intentry with real process exit codes, plusargv(),stdin_read_line,stdin_read_all,eprint, and theparse_args(spec, argv)flag parser. - Data processing — lazy
stream_csv(RFC-4180) /stream_jsonlparsers andparse_csv_line, plusgzip/gunzip/deflate/inflateandzip_archive/zip_list/zip_extract(newstdlib/src/stream_io.rs). - VM line mapping — the compiler emits a source line-marker per top-level statement into
Chunk.linesfor source-to-bytecode mapping.
rakc debug
- New bytecode-VM source debugger:
break,continue/c,step/s,next/n,finish,locals,stack/backtrace,frame,print <name>, and fulldisassemblewith line markers + operands.
rakpkg
- Now a lib + bin so
parse_manifest_stris reusable/fuzzable. - Version/rev constraints (
user/repo@^1.2,#rev),rakpkg.lock(resolved rev + manifest SHA-256 checksum), and new commands:update,lock,tree(cycle-safe dependency graph),audit,publish.
Fuzzing
- 8 proptest harnesses (stable CI) for the lexer, parser, DNS, packet builders, WebSocket, TLS, JSON, and tunnel framing (
rakc/tests/proptest_harness.rs). - A standalone libFuzzer / cargo-fuzz pack (
fuzz/, 13 targets: lexer, parser, eval, manifest, dns, tls, json, websocket, tunnel, netraw, csv, gzip, zip).
IDE + VS Code
- Fixed bugs in the IDE.
- Added the full v0.7.0 syntax vocabulary to the IDE editor (CodeEditor) and the VS Code extension (vscode-rak grammar, version 0.5.1 → 0.7.0): structured errors, async orchestration, streaming, CLI, and compression builtins, plus 9 new editor snippets (
fn main,await_all,task_group,timeout,stream,read_lines,stream_csv,parse_args, structured errors).
Documentation
- Restructured the docs: content is now split into markdown page files under
docs/content/*.md(based onREADME.mdandrak-features-spec.md), anddocs.htmlis now a lightweight markdown-driven viewer (dependency-free renderer + hash router) served by GitHub Pages.
Bug fixes
Rak installer (rak-setup)
- Fix PATH clobbering on Windows — the installer no longer overwrites a user's entire PATH. Previously a broken
reg queryparse could capture the registry type token andsetx /Mcould write the system PATH even for user installs, breaking unrelated CLIs (e.g. rustc/cargo). Now PATH edits are append-only on the correct registry hive (HKCU for user, HKLM for system),setxis removed, and aWM_SETTINGCHANGEbroadcast refreshes running programs. - Uninstall now removes only the rak PATH entry (instead of deleting the whole PATH value) and only recurses into rak-owned directories.
- Component selection is now an explicit multi-select on the first screen (space to toggle, enter to confirm), with
rakc+rakpkgpreselected. --installvalidates component names and rejects unknown ones.