Skip to content

[BUMP:cli:0.4.0-canary.0] [BUMP:py_client:1.3.0+canary.0] [BUMP:vscode_ext:0.5.0-canary.0] - #6

Merged
hellovai merged 1 commit into
canaryfrom
vbv/bump-version/16969226393N
Oct 10, 2023
Merged

[BUMP:cli:0.4.0-canary.0] [BUMP:py_client:1.3.0+canary.0] [BUMP:vscode_ext:0.5.0-canary.0]#6
hellovai merged 1 commit into
canaryfrom
vbv/bump-version/16969226393N

Conversation

@hellovai

Copy link
Copy Markdown
Contributor

Automated flow to bump version [BUMP:cli:0.4.0-canary.0] [BUMP:py_client:1.3.0+canary.0] [BUMP:vscode_ext:0.5.0-canary.0]

@hellovai
hellovai merged commit ef5afe0 into canary Oct 10, 2023
@hellovai
hellovai deleted the vbv/bump-version/16969226393N branch October 10, 2023 07:27
hellovai added a commit that referenced this pull request Jan 20, 2026
Complete the BEX garbage collector by closing 5 identified gaps:

- Gap #1: Parked VM roots now collected via VM pointer registry
- Gap #2: VM stacks updated with forwarding pointers after GC
- Gap #3: TLABs invalidated after GC space swap
- Gap #6: Handle race condition fixed with EpochGuard

Key changes:
- Add parked_vms registry to EpochState for tracking VMs at safepoints
- Collect roots from all parked VM stacks during GC
- Update parked VM stacks with forwarding pointers after copying
- Remove cached ObjectIndex from Handle (always resolve through table)
- Add gc_in_progress flag to synchronize new calls with GC
- Add EpochGuard token for compile-time epoch protection enforcement
- Add heap accessor API for safe external code access (read_string, etc.)
- Add GC coordination documentation to module docs
antoniosarosi added a commit that referenced this pull request May 4, 2026
- pull_semantics: debug_assert on the default `make_closure_with_type_args`
  so a sink that drops `ntypeargs` fails fast instead of silently modeling
  the wrong stack shape (#1).
- mir/lower: `enclosing_generic_params()` now prepends class-level
  generics (matching TIR's `enclosing_class_generic_params ++ user`
  convention), so `reflect.type_of<T>()` and explicit `<T>` calls inside a
  method on `class Box<T>` lower to `TypeArgRef(N)` instead of silently
  emitting `Concrete(Void)` (#2, MIR side only — runtime ABI for class
  type-arg threading via the receiver is still TODO; documented on the
  helper). Two stdlib snapshots regenerated to reflect the now-correct
  lowering for `Stream<T,S>::final()` / `__sap_parse_partial<T,S>`.
- tir/builder: add `Ty::Type { .. }` arm to `try_resolve_member_on_ty`
  so unions like `(cond ? type_of<A>() : type_of<B>()).to_string()`
  resolve via the `TypeValue` companion class (#4).
- vm: gate the post-`Call` `type_args` writeback on
  `frames.len() > frames_before` so completed Native callees don't
  clobber the caller's frame, and `extend` rather than replace so a
  closure callee's `captured_type_args` are preserved with call-site
  args appended (#6, critical).
- tests/load_type: tighten the concrete `LoadType` tests to match
  `Object::Type(ty)` against `Ty::int()`/`Ty::string()` and assert they
  differ, instead of accepting any `Value::Object(_)` (#7).
- type_class / reflect_type_of: document `TypeValue.to_string()` as a
  stable identity key (package names are unique within a workspace, so
  the existing `Display` form is unambiguous) and add an end-to-end
  `map<string, V>` keyed-by-`type_of<T>().to_string()` test as the
  user-reachable analogue of `map<type, V>` (#8).
- conversion: document the runtime gap that class-instance matching in
  `value_matches_type` and `find_matching_union_member` ignores
  `Ty::Class` type args because `Object::Instance` carries no resolved
  class type args — needed for proper union dispatch on parametric
  classes (#9, runtime side bundled with #2 follow-up).
codeshaunted added a commit that referenced this pull request Jun 2, 2026
Addresses two more CodeRabbit comments on generic instantiation exprs:

#3 (lower.rs): a `GenericApply` whose base is not a compile-time function
reference (a local/captured generic function value, e.g. `let g = foo;
let h = g<int>`) previously fell back to lowering the base with its type
args ERASED — reintroducing the type/runtime mismatch the feature removes.
Now the runtime value is specialized: a new `Rvalue::MakeGenericFunctionFromValue`
+ `MakeGenericFunctionFromValue` opcode wraps the evaluated callable in a
Closure carrying the (frame-resolved) type args, reusing the closure call
path that already seeds `frame.type_args`. So `g<int>` runs end-to-end and a
type-reifying body (`reflect.type_of<T>`) resolves T correctly, including the
param-dependent `g<T>` case. No new GC-traced object: the only reachable
non-ItemRef base is a local holding a bare function (static methods take the
pooled ItemRef path, lambdas/GenericFunction bases are rejected by TIR).

#6 (instantiation_interning.rs): `baml.deep_equals` is structural, so the
fixture couldn't prove the pooled, pointer-stable identity (`foo<int> ===
foo<int>`); BAML has no in-language identity operator. Added a Rust harness
that inspects the compiled object pool: two `identity<Marker>` references
intern to one `Object::GenericFunction`, distinct from `identity<Other>`.

Full workspace suite green (5006 passed).
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