Skip to content

Add move closures, allocators, join results, and protocol endpoints - #32

Merged
Cod-e-Codes merged 1 commit into
mainfrom
language-holes
Sep 23, 2026
Merged

Cod-e-Codes merged 1 commit into
mainfrom
language-holes

Conversation

@Cod-e-Codes

@Cod-e-Codes Cod-e-Codes commented Sep 23, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • The checker copies aggregates of Copy fields, treats a literal index as its own borrow path, and marks a consuming call inside an operator or index so Box::unwrap in an expression is freed once.
  • ? accepts an owned enum with one success variant. for accepts Iter<T>. A fn literal that names an outer owned binding is a move closure. spawn is JoinHandle<T>, and scope joins handles still owned in the block.
  • Vec, String, and Box store an Allocator. endpoint<Name>() is a unique protocol endpoint on two crossed channels. This is 0.4.0: regenerate C for Vec, String, and Box, and relink.

Test plan

  • cargo fmt --check
  • cargo test
  • cargo clippy -- -D warnings
  • tests/test_runner.sh on Linux, macOS, and Windows
  • Sanitizer and warning-clean generated C in CI

The checker copies aggregates of Copy fields, splits literal indexes, and marks moves inside operands so a Box::unwrap in an expression is freed once. Vec, String, and Box store an allocator, so programs that use them must regenerate C and relink.
@Cod-e-Codes
Cod-e-Codes merged commit 977fa79 into main Sep 23, 2026
8 checks passed
@Cod-e-Codes
Cod-e-Codes deleted the language-holes branch September 23, 2026 23:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant