Incan v0.2.0
·
2 commits
to release/v0.2
since this release
Immutable
release. Only release title and notes can be modified.
Incan 0.2
Incan 0.2 is the release where the language becomes more explicit, more modular, and much more serious about Rust interop.
The biggest user-facing shift is that stdlib imports and decorators now live under the std.* namespace. This release also introduces the first experimental Incan library workflow, module-level static storage, explicit call-site generic arguments, and a much stronger Rust boundary around crates, rust:: imports, rusttype, and interop authoring.
Highlights
- Namespaced stdlib surface under
std.* - Clear separation between Incan dependencies and Rust dependencies in
incan.toml - Experimental Incan Libraries with
pub::consumption - New
static/pub staticmodule storage - Explicit call-site generic arguments like
id[int](1) - Stronger Rust interop and better docs around
rust::,rusttype, and interop adapters - Major stabilization across ownership/codegen, tuple-unpack iteration, test harness cwd handling, and real downstream RC regressions
Migration notes
If you are upgrading from 0.1, the main changes are:
- Move stdlib imports and decorators to
std.* - Move Rust crates out of
[dependencies]into[rust-dependencies]/[rust-dev-dependencies] - Add explicit
std.async/std.testingimports in files that use those surfaces
Notable fixes from the 0.2 RC cycle
- Ownership/materialization fixes across comprehensions,
Result[str, E], struct cloning, enum loops, sharedlist[str]helper calls, andlist[str].append("...") - Stronger Python-shaped iteration and pattern handling, including
for idx, name in enumerate(xs): - Builtin shadowing fixes for imported/user helpers such as
sum - Correct project-root cwd behavior in generated
incan testharnesses - Parse-safe
len(...)lowering in generated Rust comparisons
Known limitations
- Ownership/borrow lowering is still heuristic in some edge cases; the broader planner work is tracked for
0.3 incan fmtis still intentionally conservative on some line-length and layout cases- Rust macro syntax such as
serde_json::json!(...)is still not supported directly in Incan source
Docs
Start here if you want the full release write-up and migration guide:
workspaces/docs-site/docs/release_notes/0_2.md