Skip to content

stdlib: format + remove baml.deep_equals + remove type.implementors - #4359

Merged
2kai2kai2 merged 3 commits into
canaryfrom
kai/stdlib
Aug 11, 2026
Merged

stdlib: format + remove baml.deep_equals + remove type.implementors#4359
2kai2kai2 merged 3 commits into
canaryfrom
kai/stdlib

Conversation

@2kai2kai2

@2kai2kai2 2kai2kai2 commented Aug 11, 2026

Copy link
Copy Markdown
Contributor
  • Ran the formatter on the standard library
  • Fixed some systems that relied on specific (un)formatting of the standard library due to parallel parser implementations
  • Removed baml.deep_equals in favor of baml.ops.Equals
  • Removed type.implementors which attempted to enumerate all implementors of an interface, despite that being an intractable task (there are an unbounded number of generic variations of types that could implement a given interface)

Summary by CodeRabbit

  • New Features

    • Added live process management, including process launching, incremental output reading, stdin control, waiting, termination, and cleanup.
    • Added an option to keep process stdin open.
  • Changes

    • Removed the TypeValue.implementors() reflection method and related implementor enumeration behavior.
    • Removed the deep-equality helper in favor of standard equality operations.
  • Refactor

    • Standardized standard-library syntax and formatting across packages without changing existing behavior.
  • Tests

    • Updated equality and reflection tests to use direct assertion and membership checks.

@vercel

vercel Bot commented Aug 11, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
beps Ready Ready Preview Aug 11, 2026 7:04pm
promptfiddle2 Ready Ready Preview Aug 11, 2026 7:04pm

Request Review

@github-actions

Copy link
Copy Markdown

⏭️ Performance benchmarks were skipped

Perf benchmarks (CodSpeed) are opt-in on pull requests — they no longer run on every push. They always run automatically after merge to canary/main.

To run them on this PR, do any of the following, then push a commit (or re-run CI):

  • Add RUN_CODSPEED=1 to the PR description, or
  • Include run-perf or /perf in the PR title or any commit message.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: cd7f87a5-6d98-42bf-8186-afc38a7a8b1d

📥 Commits

Reviewing files that changed from the base of the PR and between e8ad36f and 73be045.

⛔ Files ignored due to path filters (25)
  • baml_language/crates/baml_cli/src/snapshots/baml_cli__describe_command_tests__render_builtin_namespace_prompt.snap is excluded by !**/*.snap
  • baml_language/crates/baml_cli/src/snapshots/baml_cli__describe_command_tests__render_builtin_package_listing.snap is excluded by !**/*.snap
  • baml_language/crates/baml_cli/src/snapshots/baml_cli__describe_command_tests__render_testing_package_listing.snap is excluded by !**/*.snap
  • baml_language/crates/baml_cli/src/snapshots/baml_cli__describe_render__tests__renders_builtin_class_with_impls.snap is excluded by !**/*.snap
  • baml_language/crates/baml_cli/src/snapshots/baml_cli__describe_render__tests__renders_user_items.snap is excluded by !**/*.snap
  • baml_language/crates/baml_surface/src/snapshots/baml_surface__export_tests__assert_package_exports_fully.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/comparable_sort.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/deep_copy.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/fs.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/instantiation_expr.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/interfaces.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/interfaces_associated_types.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/iter.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/parse_companions.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/streaming_sse_primitives.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/type_reflection.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/__baml_std__/baml_tests__compiles____baml_std____03_ppir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/__baml_std__/baml_tests__compiles____baml_std____04_5_mir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/__baml_std__/baml_tests__compiles____baml_std____04_tir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/__baml_std__/baml_tests__compiles____baml_std____06_codegen.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/__testing_std__/baml_tests__compiles____testing_std____03_ppir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/__testing_std__/baml_tests__compiles____testing_std____04_tir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/src/compiler2_tir/snapshots/baml_tests__compiler2_tir__phase5__snapshot_baml_package_items.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/tests/bytecode_format/snapshots/bytecode_format__bytecode_display_expanded.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/tests/bytecode_format/snapshots/bytecode_format__bytecode_display_expanded_unoptimized.snap is excluded by !**/*.snap
📒 Files selected for processing (178)
  • baml_language/crates/baml_builtins2/baml_std/ai/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/ai/journal.baml
  • baml_language/crates/baml_builtins2/baml_std/ai/ns_internal/helpers.baml
  • baml_language/crates/baml_builtins2/baml_std/ai/ns_mcp/mcp.baml
  • baml_language/crates/baml_builtins2/baml_std/ai/ns_stream/stream.baml
  • baml_language/crates/baml_builtins2/baml_std/ai/runner.baml
  • baml_language/crates/baml_builtins2/baml_std/ai/spec.baml
  • baml_language/crates/baml_builtins2/baml_std/anthropic/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/anthropic/ns_internal/messages.baml
  • baml_language/crates/baml_builtins2/baml_std/assert/assert.baml
  • baml_language/crates/baml_builtins2/baml_std/assert/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/baml/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/baml/bigint.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/comparable.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/containers.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/conversions.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/core.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/float.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/int.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_csv/csv.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_env/env.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_errors/error_context.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_errors/errors.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_errors/stack_trace.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_errors/unknown_error.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_fs/fs.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_future/future.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_glob/glob.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_host/host.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_http/http.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_http/server.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_id/id.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_io/io.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_iter/iter.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_json/json.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_media/media.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_net/net.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_ops/comparison.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_ops/math.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_panics/panics.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_prompt/prompt.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_prompt/sys_llm_types.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_random/random.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_sap/sap.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_spawn/spawn.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_sys/sys.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/duration.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/instant.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/plaindate.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/plaindatetime.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/plaintime.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/timezone.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/zoneddatetime.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_toml/toml.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_yaml/yaml.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/string.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/type_class.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/uint8array.baml
  • baml_language/crates/baml_builtins2/baml_std/boundary/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/boundary/core.baml
  • baml_language/crates/baml_builtins2/baml_std/boundary/ns_id/id.baml
  • baml_language/crates/baml_builtins2/baml_std/claude_code/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/claude_code/ns_internal/cli.baml
  • baml_language/crates/baml_builtins2/baml_std/google/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/google/gemini.baml
  • baml_language/crates/baml_builtins2/baml_std/google/ns_internal/gemini.baml
  • baml_language/crates/baml_builtins2/baml_std/log/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/log/log.baml
  • baml_language/crates/baml_builtins2/baml_std/openai/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/openai/ns_internal/responses.baml
  • baml_language/crates/baml_builtins2/baml_std/reflect/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/reflect/reflect.baml
  • baml_language/crates/baml_builtins2/baml_std/testing/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/testing/registry.baml
  • baml_language/crates/baml_builtins2/baml_std/testing/runners.baml
  • baml_language/crates/baml_builtins2/baml_std/testing/types.baml
  • baml_language/crates/baml_builtins2_codegen/src/codegen.rs
  • baml_language/crates/baml_builtins2_codegen/src/extract.rs
  • baml_language/crates/baml_compiler2_ast/Cargo.toml
  • baml_language/crates/baml_lsp2_actions_tests/test_files/semantic_tokens/cancel_token.baml
  • baml_language/crates/baml_lsp2_actions_tests/test_files/semantic_tokens/interfaces_sort_comparable.baml
  • baml_language/crates/baml_lsp2_actions_tests/test_files/semantic_tokens/task_group.baml
  • baml_language/crates/baml_tests/baml_src/ns_array_rest_binding/array_rest_binding.baml
  • baml_language/crates/baml_tests/baml_src/ns_arrays/arrays.baml
  • baml_language/crates/baml_tests/baml_src/ns_arrays/reductions.baml
  • baml_language/crates/baml_tests/baml_src/ns_arrays/sort_comparable.baml
  • baml_language/crates/baml_tests/baml_src/ns_arrays/sum.baml
  • baml_language/crates/baml_tests/baml_src/ns_assignments/assignments.baml
  • baml_language/crates/baml_tests/baml_src/ns_bigints/bigints.baml
  • baml_language/crates/baml_tests/baml_src/ns_builtins/builtins.baml
  • baml_language/crates/baml_tests/baml_src/ns_byte_strings/byte_strings.baml
  • baml_language/crates/baml_tests/baml_src/ns_cancel_cascade/cancel_cascade.baml
  • baml_language/crates/baml_tests/baml_src/ns_cancel_token/cancel_token.baml
  • baml_language/crates/baml_tests/baml_src/ns_catch_arm_return/catch_arm_return.baml
  • baml_language/crates/baml_tests/baml_src/ns_class_type_args_at_runtime/class_type_args_at_runtime.baml
  • baml_language/crates/baml_tests/baml_src/ns_classes/classes.baml
  • baml_language/crates/baml_tests/baml_src/ns_cleanup/cleanup.baml
  • baml_language/crates/baml_tests/baml_src/ns_closures/closures.baml
  • baml_language/crates/baml_tests/baml_src/ns_comparable_sort/comparable_sort.baml
  • baml_language/crates/baml_tests/baml_src/ns_const_bindings/const_bindings.baml
  • baml_language/crates/baml_tests/baml_src/ns_control_flow/control_flow.baml
  • baml_language/crates/baml_tests/baml_src/ns_deep_copy/deep_copy.baml
  • baml_language/crates/baml_tests/baml_src/ns_defer/defer.baml
  • baml_language/crates/baml_tests/baml_src/ns_enums/enums.baml
  • baml_language/crates/baml_tests/baml_src/ns_exceptions/exceptions.baml
  • baml_language/crates/baml_tests/baml_src/ns_floats/floats.baml
  • baml_language/crates/baml_tests/baml_src/ns_for_loops/for_loops.baml
  • baml_language/crates/baml_tests/baml_src/ns_fs/fs.baml
  • baml_language/crates/baml_tests/baml_src/ns_functions/functions.baml
  • baml_language/crates/baml_tests/baml_src/ns_future_methods/future_methods.baml
  • baml_language/crates/baml_tests/baml_src/ns_gc/gc.baml
  • baml_language/crates/baml_tests/baml_src/ns_glob/glob.baml
  • baml_language/crates/baml_tests/baml_src/ns_http_server/http_server.baml
  • baml_language/crates/baml_tests/baml_src/ns_if_else/if_else.baml
  • baml_language/crates/baml_tests/baml_src/ns_instantiation_expr/instantiation_expr.baml
  • baml_language/crates/baml_tests/baml_src/ns_interfaces/interfaces.baml
  • baml_language/crates/baml_tests/baml_src/ns_interfaces/interfaces_2.baml
  • baml_language/crates/baml_tests/baml_src/ns_interfaces/interfaces_3.baml
  • baml_language/crates/baml_tests/baml_src/ns_interfaces_associated_types/interfaces_associated_types.baml
  • baml_language/crates/baml_tests/baml_src/ns_ints/ints.baml
  • baml_language/crates/baml_tests/baml_src/ns_is_operator/is_operator.baml
  • baml_language/crates/baml_tests/baml_src/ns_iter/iter.baml
  • baml_language/crates/baml_tests/baml_src/ns_iter_impl_generics_only/iter.baml
  • baml_language/crates/baml_tests/baml_src/ns_json_alias/json_alias.baml
  • baml_language/crates/baml_tests/baml_src/ns_json_auto_derive/json_auto_derive.baml
  • baml_language/crates/baml_tests/baml_src/ns_json_parse_stringify/json_parse_stringify.baml
  • baml_language/crates/baml_tests/baml_src/ns_json_to_from_string/json_to_from_string.baml
  • baml_language/crates/baml_tests/baml_src/ns_lambdas/lambdas.baml
  • baml_language/crates/baml_tests/baml_src/ns_lexical_scoping/lexical_scoping.baml
  • baml_language/crates/baml_tests/baml_src/ns_maps/maps.baml
  • baml_language/crates/baml_tests/baml_src/ns_match_arm_break_continue/match_arm_break_continue.baml
  • baml_language/crates/baml_tests/baml_src/ns_match_basics/match_basics.baml
  • baml_language/crates/baml_tests/baml_src/ns_match_optimization/match_optimization.baml
  • baml_language/crates/baml_tests/baml_src/ns_match_types/match_types.baml
  • baml_language/crates/baml_tests/baml_src/ns_null_handling/null_handling.baml
  • baml_language/crates/baml_tests/baml_src/ns_operators/operators.baml
  • baml_language/crates/baml_tests/baml_src/ns_optional_function_parameters/optional_function_parameters.baml
  • baml_language/crates/baml_tests/baml_src/ns_parse_companions/parse_companions.baml
  • baml_language/crates/baml_tests/baml_src/ns_patterns_new_runtime/patterns_new_runtime.baml
  • baml_language/crates/baml_tests/baml_src/ns_property_shorthand/property_shorthand.baml
  • baml_language/crates/baml_tests/baml_src/ns_reflect_type_of/reflect_type_of.baml
  • baml_language/crates/baml_tests/baml_src/ns_reflect_type_of_generic/reflect_type_of_generic.baml
  • baml_language/crates/baml_tests/baml_src/ns_shell/shell.baml
  • baml_language/crates/baml_tests/baml_src/ns_soundness/soundness.baml
  • baml_language/crates/baml_tests/baml_src/ns_spawn_basic/spawn_basic.baml
  • baml_language/crates/baml_tests/baml_src/ns_spawn_name_object/spawn_name_object.baml
  • baml_language/crates/baml_tests/baml_src/ns_spawn_semantics/spawn_semantics.baml
  • baml_language/crates/baml_tests/baml_src/ns_spawn_throws/spawn_throws.baml
  • baml_language/crates/baml_tests/baml_src/ns_streaming_sse_primitives/streaming_sse_primitives.baml
  • baml_language/crates/baml_tests/baml_src/ns_strings/strings.baml
  • baml_language/crates/baml_tests/baml_src/ns_task_group/task_group.baml
  • baml_language/crates/baml_tests/baml_src/ns_time/time.baml
  • baml_language/crates/baml_tests/baml_src/ns_type_error_repro/type_error_repro.baml
  • baml_language/crates/baml_tests/baml_src/ns_type_reflection/type_reflection.baml
  • baml_language/crates/baml_tests/baml_src/ns_typed_inputs/typed_inputs.baml
  • baml_language/crates/baml_tests/baml_src/ns_typed_outputs/typed_outputs.baml
  • baml_language/crates/baml_tests/baml_src/ns_while_loops/while_loops.baml
  • baml_language/crates/baml_tests/baml_src/ns_wildcard_type_inference/wildcard_type_inference.baml
  • baml_language/crates/baml_tests/tests/instantiation_interning.rs
  • baml_language/crates/baml_tests/tests/interfaces.rs
  • baml_language/crates/baml_type_runtime/src/lib.rs
  • baml_language/crates/bex_vm/src/package_baml/mod.rs
  • baml_language/crates/bex_vm/src/package_baml/ops.rs
  • baml_language/crates/bex_vm/src/package_baml/resolve.rs
  • baml_language/crates/bex_vm/src/package_baml/root.rs
  • baml_language/crates/bex_vm/src/package_baml/type_class.rs
  • baml_language/crates/bex_vm/src/package_load.rs
  • baml_language/crates/bex_vm/src/vm.rs
  • baml_language/crates/bex_vm/tests/bigint_equality.rs
  • baml_language/crates/bex_vm/tests/deep_equals_bigint.rs
  • baml_language/crates/bex_vm/tests/load_type.rs
  • baml_language/crates/bex_vm/tests/ops_comparison.rs
  • baml_language/mise.toml
  • tools/sdk-parity-lint/baml_src/baseline.baml
  • tools/sdk-parity-lint/baml_src/render.baml
  • tools/stdlib-matrix/baml_src/ratchet.baml
  • tools/stdlib-matrix/baml_src/tests.baml
💤 Files with no reviewable changes (5)
  • baml_language/crates/bex_vm/src/vm.rs
  • baml_language/crates/bex_vm/src/package_baml/type_class.rs
  • baml_language/crates/baml_builtins2_codegen/src/codegen.rs
  • baml_language/crates/bex_vm/src/package_load.rs
  • baml_language/crates/baml_builtins2/baml_std/baml/type_class.baml
🚧 Files skipped from review as they are similar to previous changes (148)
  • baml_language/crates/baml_tests/baml_src/ns_comparable_sort/comparable_sort.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/bigint.baml
  • baml_language/crates/baml_builtins2/baml_std/testing/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_env/env.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/conversions.baml
  • baml_language/crates/baml_tests/baml_src/ns_http_server/http_server.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/int.baml
  • baml_language/crates/baml_builtins2/baml_std/assert/baml.toml
  • baml_language/crates/baml_tests/baml_src/ns_time/time.baml
  • baml_language/crates/baml_builtins2/baml_std/assert/assert.baml
  • baml_language/crates/baml_tests/baml_src/ns_streaming_sse_primitives/streaming_sse_primitives.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_yaml/yaml.baml
  • baml_language/crates/baml_tests/baml_src/ns_const_bindings/const_bindings.baml
  • baml_language/crates/baml_tests/baml_src/ns_if_else/if_else.baml
  • tools/sdk-parity-lint/baml_src/baseline.baml
  • baml_language/crates/baml_tests/baml_src/ns_gc/gc.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/baml.toml
  • baml_language/crates/baml_tests/baml_src/ns_cleanup/cleanup.baml
  • baml_language/crates/baml_tests/baml_src/ns_shell/shell.baml
  • baml_language/crates/baml_tests/baml_src/ns_json_alias/json_alias.baml
  • baml_language/crates/baml_tests/baml_src/ns_spawn_throws/spawn_throws.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/comparable.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_fs/fs.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/containers.baml
  • baml_language/crates/baml_tests/baml_src/ns_control_flow/control_flow.baml
  • baml_language/crates/bex_vm/tests/load_type.rs
  • baml_language/crates/bex_vm/src/package_baml/mod.rs
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/plaintime.baml
  • baml_language/crates/baml_tests/baml_src/ns_cancel_token/cancel_token.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_host/host.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_random/random.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_future/future.baml
  • baml_language/crates/baml_tests/baml_src/ns_enums/enums.baml
  • baml_language/crates/baml_builtins2/baml_std/boundary/core.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/float.baml
  • baml_language/crates/baml_tests/baml_src/ns_json_parse_stringify/json_parse_stringify.baml
  • baml_language/crates/baml_tests/baml_src/ns_property_shorthand/property_shorthand.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_errors/error_context.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_http/server.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_errors/unknown_error.baml
  • baml_language/crates/bex_vm/src/package_baml/root.rs
  • baml_language/crates/baml_builtins2_codegen/src/extract.rs
  • baml_language/crates/baml_tests/baml_src/ns_task_group/task_group.baml
  • baml_language/crates/baml_tests/baml_src/ns_closures/closures.baml
  • baml_language/crates/baml_tests/baml_src/ns_defer/defer.baml
  • baml_language/crates/baml_tests/baml_src/ns_future_methods/future_methods.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/string.baml
  • baml_language/crates/bex_vm/tests/ops_comparison.rs
  • baml_language/crates/baml_tests/baml_src/ns_soundness/soundness.baml
  • baml_language/crates/baml_tests/baml_src/ns_arrays/sort_comparable.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_glob/glob.baml
  • baml_language/crates/baml_builtins2/baml_std/log/log.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_errors/stack_trace.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/plaindate.baml
  • baml_language/crates/bex_vm/src/package_baml/ops.rs
  • baml_language/crates/baml_tests/baml_src/ns_arrays/reductions.baml
  • baml_language/crates/baml_builtins2/baml_std/boundary/ns_id/id.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/uint8array.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/duration.baml
  • baml_language/crates/baml_tests/baml_src/ns_catch_arm_return/catch_arm_return.baml
  • baml_language/crates/baml_tests/baml_src/ns_parse_companions/parse_companions.baml
  • baml_language/crates/baml_tests/baml_src/ns_for_loops/for_loops.baml
  • baml_language/crates/baml_builtins2/baml_std/log/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/plaindatetime.baml
  • baml_language/crates/baml_tests/baml_src/ns_cancel_cascade/cancel_cascade.baml
  • baml_language/crates/bex_vm/tests/bigint_equality.rs
  • baml_language/crates/baml_tests/baml_src/ns_match_arm_break_continue/match_arm_break_continue.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_ops/comparison.baml
  • baml_language/crates/baml_tests/baml_src/ns_lexical_scoping/lexical_scoping.baml
  • baml_language/crates/baml_tests/baml_src/ns_patterns_new_runtime/patterns_new_runtime.baml
  • baml_language/crates/baml_compiler2_ast/Cargo.toml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_errors/errors.baml
  • baml_language/crates/baml_builtins2/baml_std/testing/types.baml
  • baml_language/crates/baml_tests/baml_src/ns_interfaces/interfaces_3.baml
  • baml_language/crates/baml_tests/baml_src/ns_spawn_basic/spawn_basic.baml
  • baml_language/crates/baml_tests/baml_src/ns_interfaces/interfaces.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_io/io.baml
  • baml_language/crates/baml_tests/baml_src/ns_match_optimization/match_optimization.baml
  • baml_language/crates/baml_tests/baml_src/ns_reflect_type_of/reflect_type_of.baml
  • baml_language/crates/baml_tests/tests/instantiation_interning.rs
  • baml_language/crates/baml_tests/baml_src/ns_while_loops/while_loops.baml
  • baml_language/crates/baml_builtins2/baml_std/reflect/reflect.baml
  • baml_language/crates/baml_builtins2/baml_std/reflect/baml.toml
  • baml_language/crates/baml_tests/baml_src/ns_floats/floats.baml
  • baml_language/crates/baml_builtins2/baml_std/boundary/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_id/id.baml
  • baml_language/crates/baml_tests/baml_src/ns_is_operator/is_operator.baml
  • tools/sdk-parity-lint/baml_src/render.baml
  • baml_language/crates/baml_tests/baml_src/ns_type_error_repro/type_error_repro.baml
  • baml_language/crates/baml_tests/baml_src/ns_glob/glob.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_toml/toml.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_panics/panics.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_http/http.baml
  • baml_language/crates/baml_tests/baml_src/ns_class_type_args_at_runtime/class_type_args_at_runtime.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_csv/csv.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_iter/iter.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/instant.baml
  • baml_language/crates/baml_tests/baml_src/ns_strings/strings.baml
  • baml_language/crates/baml_lsp2_actions_tests/test_files/semantic_tokens/task_group.baml
  • baml_language/crates/baml_builtins2/baml_std/testing/registry.baml
  • baml_language/crates/baml_tests/baml_src/ns_null_handling/null_handling.baml
  • baml_language/crates/baml_tests/baml_src/ns_wildcard_type_inference/wildcard_type_inference.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_spawn/spawn.baml
  • baml_language/crates/baml_tests/baml_src/ns_instantiation_expr/instantiation_expr.baml
  • baml_language/crates/baml_tests/baml_src/ns_iter/iter.baml
  • baml_language/crates/baml_tests/baml_src/ns_match_basics/match_basics.baml
  • baml_language/crates/baml_type_runtime/src/lib.rs
  • baml_language/crates/baml_tests/baml_src/ns_interfaces/interfaces_2.baml
  • baml_language/crates/baml_tests/baml_src/ns_type_reflection/type_reflection.baml
  • baml_language/crates/baml_tests/baml_src/ns_functions/functions.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/zoneddatetime.baml
  • baml_language/crates/baml_tests/baml_src/ns_json_to_from_string/json_to_from_string.baml
  • baml_language/crates/baml_tests/baml_src/ns_typed_inputs/typed_inputs.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_ops/math.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_media/media.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/core.baml
  • baml_language/crates/baml_tests/baml_src/ns_spawn_name_object/spawn_name_object.baml
  • baml_language/crates/bex_vm/src/package_baml/resolve.rs
  • baml_language/crates/baml_lsp2_actions_tests/test_files/semantic_tokens/cancel_token.baml
  • baml_language/crates/baml_tests/baml_src/ns_reflect_type_of_generic/reflect_type_of_generic.baml
  • baml_language/crates/baml_tests/baml_src/ns_byte_strings/byte_strings.baml
  • baml_language/crates/baml_tests/baml_src/ns_exceptions/exceptions.baml
  • baml_language/crates/baml_tests/baml_src/ns_bigints/bigints.baml
  • baml_language/crates/baml_tests/baml_src/ns_spawn_semantics/spawn_semantics.baml
  • baml_language/crates/baml_tests/baml_src/ns_operators/operators.baml
  • baml_language/crates/baml_tests/baml_src/ns_interfaces_associated_types/interfaces_associated_types.baml
  • baml_language/crates/baml_tests/baml_src/ns_iter_impl_generics_only/iter.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/timezone.baml
  • baml_language/crates/baml_tests/baml_src/ns_match_types/match_types.baml
  • baml_language/crates/baml_tests/baml_src/ns_array_rest_binding/array_rest_binding.baml
  • baml_language/crates/baml_tests/baml_src/ns_arrays/sum.baml
  • baml_language/crates/baml_lsp2_actions_tests/test_files/semantic_tokens/interfaces_sort_comparable.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_json/json.baml
  • baml_language/crates/baml_tests/baml_src/ns_assignments/assignments.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_net/net.baml
  • baml_language/crates/baml_tests/baml_src/ns_typed_outputs/typed_outputs.baml
  • baml_language/crates/baml_tests/baml_src/ns_builtins/builtins.baml
  • baml_language/crates/baml_tests/baml_src/ns_arrays/arrays.baml
  • baml_language/crates/baml_tests/baml_src/ns_lambdas/lambdas.baml
  • baml_language/crates/baml_tests/tests/interfaces.rs
  • baml_language/crates/baml_tests/baml_src/ns_json_auto_derive/json_auto_derive.baml
  • baml_language/crates/baml_tests/baml_src/ns_ints/ints.baml
  • baml_language/crates/baml_tests/baml_src/ns_fs/fs.baml
  • baml_language/crates/baml_tests/baml_src/ns_optional_function_parameters/optional_function_parameters.baml
  • baml_language/crates/baml_tests/baml_src/ns_deep_copy/deep_copy.baml
  • baml_language/crates/baml_tests/baml_src/ns_maps/maps.baml
  • baml_language/crates/baml_tests/baml_src/ns_classes/classes.baml
  • baml_language/crates/baml_builtins2/baml_std/testing/runners.baml

📝 Walkthrough

Walkthrough

The pull request reformats the BAML standard library and adds package manifests. It removes deep_equals and implementors(), updates equality and reflection tests, adds process-management builtins, and introduces a formatter task.

Changes

Standard library syntax and formatting

Layer / File(s) Summary
Canonical syntax migration
baml_language/crates/baml_builtins2/baml_std/...
Standard-library declarations, implementations, delimiters, indentation, and package manifests use the current BAML syntax.
Process management builtins
baml_language/crates/baml_builtins2/baml_std/baml/ns_sys/sys.baml
Adds ProcessExit, ProcessLineStream, Process, keep_stdin_open, and start_process.
Equality and reflection cleanup
baml_language/crates/bex_vm/src/package_baml/*, baml_language/crates/baml_tests/*
Removes deep_equals and implementors() implementations. Tests use direct equality and implements/implemented_by checks.
Tooling and validation updates
baml_language/mise.toml, baml_language/crates/baml_builtins2_codegen/src/*, tools/*
Updates formatter wiring, VM extraction checks, documentation, and parity fixtures.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

Suggested reviewers: aaronvg

Poem

I hop through commas, neat and bright,
While old comparisons leave the night.
Streams now process, tests compare true,
New syntax guides each builtin through.
The formatter hums; I twitch my nose—
Clean BAML code in tidy rows.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the three primary changes: standard-library formatting, removal of baml.deep_equals, and removal of type.implementors.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch kai/stdlib

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Aug 11, 2026

Copy link
Copy Markdown

Binary size checks passed

7 passed

Artifact Platform File Gzip Gated on Baseline Delta Status
baml-cli Linux 🔒 26.4 MB 11.2 MB file 27.4 MB -951.0 KB (-3.5%) OK
packed-program Linux 🔒 17.0 MB 6.9 MB file 18.6 MB -1.6 MB (-8.6%) OK
baml-cli macOS 🔒 20.6 MB 9.8 MB file 21.3 MB -698.5 KB (-3.3%) OK
packed-program macOS 🔒 13.4 MB 6.1 MB file 14.5 MB -1.1 MB (-7.7%) OK
baml-cli Windows 🔒 22.1 MB 10.0 MB file 23.0 MB -845.4 KB (-3.7%) OK
packed-program Windows 🔒 14.1 MB 6.1 MB file 15.5 MB -1.4 MB (-8.8%) OK
bridge_wasm WASM 15.8 MB 🔒 4.3 MB gzip 4.6 MB -348.9 KB (-7.6%) OK

🔒 = the size this artifact is GATED on (ceiling + delta). Binaries gate on file size (installed binary); WASM gates on gzip (download size). The other size is shown for information only.


Generated by cargo size-gate · workflow run

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
baml_language/crates/baml_tests/baml_src/ns_arrays/arrays.baml (1)

142-154: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Assert on each catch expression inline.

A catch result stored in caught can remain boxed in a test block. assert.equal(caught, expected_caught) can then fail even when the callback throws as expected. Pass each catch expression directly to the assertion.

  • baml_language/crates/baml_tests/baml_src/ns_arrays/arrays.baml#L142-L154: inline the sort_by catch expression.
  • baml_language/crates/baml_tests/baml_src/ns_arrays/arrays.baml#L207-L217: inline the sort_by_key catch expression.
  • baml_language/crates/baml_tests/baml_src/ns_arrays/arrays.baml#L222-L234: inline the no-write-back sort_by_key catch expression.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@baml_language/crates/baml_tests/baml_src/ns_arrays/arrays.baml` around lines
142 - 154, Inline each catch expression directly in its assertion, replacing the
intermediate caught/expected_caught test-block pattern for sort_by at
baml_language/crates/baml_tests/baml_src/ns_arrays/arrays.baml lines 142-154,
sort_by_key at lines 207-217, and the no-write-back sort_by_key case at lines
222-234; preserve the existing array-result assertions.

Source: Learnings

🧹 Nitpick comments (5)
baml_language/crates/baml_compiler2_ast/build.rs (4)

305-310: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low value

Additional @providers-no-options: annotations are dropped silently.

The function keeps the first annotation only. If a second annotation is added later, its providers never reach PROVIDER_CONFIGS, and no build error reports it. Flatten all matches, or assert that at most one annotation exists.

♻️ Proposed change
 fn extract_no_options_providers(file: &SyntaxNode) -> Vec<String> {
     provider_annotations(file, "`@providers-no-options`:")
         .into_iter()
-        .next()
-        .map_or_else(Vec::new, |(_, providers)| providers)
+        .flat_map(|(_, providers)| providers)
+        .collect()
 }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@baml_language/crates/baml_compiler2_ast/build.rs` around lines 305 - 310,
Update extract_no_options_providers to handle every `@providers-no-options`:
annotation instead of selecting only the first match. Flatten and combine all
provider lists returned by provider_annotations, or explicitly reject multiple
matches with a build error while preserving the existing single-annotation
behavior.

157-168: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoff

Consider making the extraction helpers unit-testable.

The build script now carries non-trivial parsing logic: annotation scanning, offset-based class association, and type normalization. Code in build.rs cannot be covered by cargo test --lib. Move these helpers into a module that the build script includes with include! and that the crate also compiles under #[cfg(test)], then add unit tests for the annotation-to-class association.

Also run cargo test --lib for the crates touched by this change.

As per coding guidelines: "Prefer writing Rust unit tests over integration tests where possible" and "Always run cargo test --lib if you changed any Rust code".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@baml_language/crates/baml_compiler2_ast/build.rs` around lines 157 - 168, The
parsing and extraction helpers in build.rs are not unit-testable through cargo
test --lib. Move the annotation scanning, offset-based class association, and
type-normalization helpers into a shared module, include that module from the
build script with include!, and compile it under cfg(test) for the crate; add
unit tests covering annotation-to-class association, then run cargo test --lib
for each affected crate.

Source: Coding guidelines


270-276: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Sort the class list instead of asserting the order.

debug_assert! is compiled out when debug_assertions are disabled, which happens for build scripts under a release profile. If the traversal order ever changes, the release build then binds annotations to the wrong class and emits a silently wrong PROVIDER_CONFIGS table. A sort makes the invariant hold in every profile at negligible cost.

♻️ Proposed change
-    let classes: Vec<(usize, String, ClassDef)> = file
+    let mut classes: Vec<(usize, String, ClassDef)> = file
         .descendants()
         .filter_map(ClassDef::cast)
         .filter_map(|class| {
             let name = class.name()?;
             Some((
                 usize::from(name.text_range().start()),
                 name.text().to_string(),
                 class,
             ))
         })
         .collect();
-    // `descendants` is a preorder walk, so the offsets come out ascending —
-    // which is what makes "first class whose name starts after the comment"
-    // the *nearest* following class rather than an arbitrary one.
-    debug_assert!(
-        classes.windows(2).all(|w| w[0].0 <= w[1].0),
-        "class name offsets must be in source order"
-    );
+    // "First class whose name starts after the comment" is only the *nearest*
+    // following class if the offsets are ascending. `descendants` is a preorder
+    // walk and already yields them that way; the sort pins the invariant.
+    classes.sort_by_key(|(name_start, _, _)| *name_start);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@baml_language/crates/baml_compiler2_ast/build.rs` around lines 270 - 276,
Replace the debug_assert! ordering check in the class-list construction with an
explicit sort by each class’s source offset (the first tuple element). Ensure
sorting occurs before the subsequent annotation-to-class binding so release and
debug builds consistently use source order; remove the assertion rather than
retaining it as the primary safeguard.

212-222: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

field_type_text silently returns an empty type.

If field.ty() is None, the function returns "". In assert_google_vertex_options_match, two fields that both lack a type then compare equal, so the Google/Vertex shape check passes on malformed input. A field without a type is unexpected here. Panic instead, in the same way extract_class_shape panics on a missing field name.

♻️ Proposed change
-/// A field's declared type, whitespace-normalized onto one line.
-fn field_type_text(field: &Field) -> String {
-    field.ty().map_or_else(String::new, |ty| {
-        ty.syntax()
-            .text()
-            .to_string()
-            .split_whitespace()
-            .collect::<Vec<_>>()
-            .join(" ")
-    })
-}
+/// A field's declared type, whitespace-normalized onto one line.
+fn field_type_text(field: &Field, class_name: &str) -> String {
+    let ty = field
+        .ty()
+        .unwrap_or_else(|| panic!("{class_name} has a field with no type"));
+    ty.syntax()
+        .text()
+        .to_string()
+        .split_whitespace()
+        .collect::<Vec<_>>()
+        .join(" ")
+}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@baml_language/crates/baml_compiler2_ast/build.rs` around lines 212 - 222,
Update field_type_text to panic when field.ty() is None instead of returning an
empty string, matching the missing-name behavior in extract_class_shape.
Preserve the existing whitespace normalization for fields with a declared type
so assert_google_vertex_options_match cannot treat two missing types as equal.
baml_language/crates/baml_tests/baml_src/ns_instantiation_expr/instantiation_expr.baml (1)

30-34: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Rename the test to match the assertion.

Line 30 checks structural equality. The test name says identical, which implies pointer identity. Rename the test so it does not claim coverage provided only by baml_language/crates/baml_tests/tests/instantiation_interning.rs.

Suggested test-name fix
-test "same_specialization_is_identical" {
+test "same_specialization_compares_equal" {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@baml_language/crates/baml_tests/baml_src/ns_instantiation_expr/instantiation_expr.baml`
around lines 30 - 34, Rename the test currently named
same_specialization_is_identical to reflect that identity_same_specialization()
asserts structural equality rather than pointer identity. Keep the assertion and
test behavior unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@baml_language/crates/baml_tests/baml_src/ns_functions/functions.baml`:
- Line 7: Update the comment near the scalar/primitive return tests to
accurately state that scalar and instance results use assert.equal, while
boolean results use assert.is_true.

In `@baml_language/crates/baml_tests/baml_src/ns_operators/operators.baml`:
- Around line 116-118: Update the equal test to assert a true equality case
using the == operator instead of the current 1 != 2 expression. Preserve the
separate inequality assertion at the later line.

---

Outside diff comments:
In `@baml_language/crates/baml_tests/baml_src/ns_arrays/arrays.baml`:
- Around line 142-154: Inline each catch expression directly in its assertion,
replacing the intermediate caught/expected_caught test-block pattern for sort_by
at baml_language/crates/baml_tests/baml_src/ns_arrays/arrays.baml lines 142-154,
sort_by_key at lines 207-217, and the no-write-back sort_by_key case at lines
222-234; preserve the existing array-result assertions.

---

Nitpick comments:
In `@baml_language/crates/baml_compiler2_ast/build.rs`:
- Around line 305-310: Update extract_no_options_providers to handle every
`@providers-no-options`: annotation instead of selecting only the first match.
Flatten and combine all provider lists returned by provider_annotations, or
explicitly reject multiple matches with a build error while preserving the
existing single-annotation behavior.
- Around line 157-168: The parsing and extraction helpers in build.rs are not
unit-testable through cargo test --lib. Move the annotation scanning,
offset-based class association, and type-normalization helpers into a shared
module, include that module from the build script with include!, and compile it
under cfg(test) for the crate; add unit tests covering annotation-to-class
association, then run cargo test --lib for each affected crate.
- Around line 270-276: Replace the debug_assert! ordering check in the
class-list construction with an explicit sort by each class’s source offset (the
first tuple element). Ensure sorting occurs before the subsequent
annotation-to-class binding so release and debug builds consistently use source
order; remove the assertion rather than retaining it as the primary safeguard.
- Around line 212-222: Update field_type_text to panic when field.ty() is None
instead of returning an empty string, matching the missing-name behavior in
extract_class_shape. Preserve the existing whitespace normalization for fields
with a declared type so assert_google_vertex_options_match cannot treat two
missing types as equal.

In
`@baml_language/crates/baml_tests/baml_src/ns_instantiation_expr/instantiation_expr.baml`:
- Around line 30-34: Rename the test currently named
same_specialization_is_identical to reflect that identity_same_specialization()
asserts structural equality rather than pointer identity. Keep the assertion and
test behavior unchanged.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 0838bdfc-de4e-4e2d-9dea-30e73092fb55

📥 Commits

Reviewing files that changed from the base of the PR and between 9f894f7 and df3f436.

⛔ Files ignored due to path filters (26)
  • baml_language/crates/baml_cli/src/snapshots/baml_cli__describe_command_tests__render_assert_package_listing.snap is excluded by !**/*.snap
  • baml_language/crates/baml_cli/src/snapshots/baml_cli__describe_command_tests__render_builtin_namespace_llm.snap is excluded by !**/*.snap
  • baml_language/crates/baml_cli/src/snapshots/baml_cli__describe_command_tests__render_builtin_package_listing.snap is excluded by !**/*.snap
  • baml_language/crates/baml_cli/src/snapshots/baml_cli__describe_command_tests__render_testing_package_listing.snap is excluded by !**/*.snap
  • baml_language/crates/baml_cli/src/snapshots/baml_cli__describe_render__tests__renders_builtin_class_with_impls.snap is excluded by !**/*.snap
  • baml_language/crates/baml_cli/src/snapshots/baml_cli__describe_render__tests__renders_user_items.snap is excluded by !**/*.snap
  • baml_language/crates/baml_surface/src/snapshots/baml_surface__export_tests__assert_package_exports_fully.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/comparable_sort.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/deep_copy.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/fs.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/instantiation_expr.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/interfaces.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/interfaces_associated_types.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/iter.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/parse_companions.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/streaming_sse_primitives.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/baml_src/type_reflection.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/__baml_std__/baml_tests__compiles____baml_std____03_ppir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/__baml_std__/baml_tests__compiles____baml_std____04_5_mir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/__baml_std__/baml_tests__compiles____baml_std____04_tir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/__baml_std__/baml_tests__compiles____baml_std____06_codegen.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/__testing_std__/baml_tests__compiles____testing_std____03_ppir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/snapshots/compiles/__testing_std__/baml_tests__compiles____testing_std____04_tir.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/src/compiler2_tir/snapshots/baml_tests__compiler2_tir__phase5__snapshot_baml_package_items.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/tests/bytecode_format/snapshots/bytecode_format__bytecode_display_expanded.snap is excluded by !**/*.snap
  • baml_language/crates/baml_tests/tests/bytecode_format/snapshots/bytecode_format__bytecode_display_expanded_unoptimized.snap is excluded by !**/*.snap
📒 Files selected for processing (159)
  • baml_language/crates/baml_builtins2/baml_std/assert/assert.baml
  • baml_language/crates/baml_builtins2/baml_std/assert/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/baml/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/baml/bigint.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/comparable.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/containers.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/conversions.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/core.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/float.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/int.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_csv/csv.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_env/env.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_errors/error_context.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_errors/errors.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_errors/stack_trace.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_errors/unknown_error.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_fs/fs.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_future/future.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_glob/glob.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_host/host.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_http/http.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_http/server.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_id/id.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_io/io.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_iter/iter.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_json/json.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_llm/llm.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_llm/llm_types.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_media/media.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_net/net.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_ops/comparison.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_ops/math.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_panics/panics.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_random/random.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_spawn/spawn.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_stream/stream.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_sys/sys.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/duration.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/instant.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/plaindate.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/plaindatetime.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/plaintime.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/timezone.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_time/zoneddatetime.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_toml/toml.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/ns_yaml/yaml.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/string.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/type_class.baml
  • baml_language/crates/baml_builtins2/baml_std/baml/uint8array.baml
  • baml_language/crates/baml_builtins2/baml_std/boundary/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/boundary/core.baml
  • baml_language/crates/baml_builtins2/baml_std/boundary/ns_id/id.baml
  • baml_language/crates/baml_builtins2/baml_std/log/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/log/log.baml
  • baml_language/crates/baml_builtins2/baml_std/reflect/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/reflect/reflect.baml
  • baml_language/crates/baml_builtins2/baml_std/testing/baml.toml
  • baml_language/crates/baml_builtins2/baml_std/testing/registry.baml
  • baml_language/crates/baml_builtins2/baml_std/testing/runners.baml
  • baml_language/crates/baml_builtins2/baml_std/testing/types.baml
  • baml_language/crates/baml_builtins2_codegen/src/codegen.rs
  • baml_language/crates/baml_builtins2_codegen/src/extract.rs
  • baml_language/crates/baml_compiler2_ast/Cargo.toml
  • baml_language/crates/baml_compiler2_ast/build.rs
  • baml_language/crates/baml_lsp2_actions_tests/test_files/semantic_tokens/cancel_token.baml
  • baml_language/crates/baml_lsp2_actions_tests/test_files/semantic_tokens/interfaces_sort_comparable.baml
  • baml_language/crates/baml_lsp2_actions_tests/test_files/semantic_tokens/task_group.baml
  • baml_language/crates/baml_tests/baml_src/ns_array_rest_binding/array_rest_binding.baml
  • baml_language/crates/baml_tests/baml_src/ns_arrays/arrays.baml
  • baml_language/crates/baml_tests/baml_src/ns_arrays/reductions.baml
  • baml_language/crates/baml_tests/baml_src/ns_arrays/sort_comparable.baml
  • baml_language/crates/baml_tests/baml_src/ns_arrays/sum.baml
  • baml_language/crates/baml_tests/baml_src/ns_assignments/assignments.baml
  • baml_language/crates/baml_tests/baml_src/ns_bigints/bigints.baml
  • baml_language/crates/baml_tests/baml_src/ns_builtins/builtins.baml
  • baml_language/crates/baml_tests/baml_src/ns_byte_strings/byte_strings.baml
  • baml_language/crates/baml_tests/baml_src/ns_cancel_cascade/cancel_cascade.baml
  • baml_language/crates/baml_tests/baml_src/ns_cancel_token/cancel_token.baml
  • baml_language/crates/baml_tests/baml_src/ns_catch_arm_return/catch_arm_return.baml
  • baml_language/crates/baml_tests/baml_src/ns_class_type_args_at_runtime/class_type_args_at_runtime.baml
  • baml_language/crates/baml_tests/baml_src/ns_classes/classes.baml
  • baml_language/crates/baml_tests/baml_src/ns_cleanup/cleanup.baml
  • baml_language/crates/baml_tests/baml_src/ns_closures/closures.baml
  • baml_language/crates/baml_tests/baml_src/ns_comparable_sort/comparable_sort.baml
  • baml_language/crates/baml_tests/baml_src/ns_const_bindings/const_bindings.baml
  • baml_language/crates/baml_tests/baml_src/ns_control_flow/control_flow.baml
  • baml_language/crates/baml_tests/baml_src/ns_deep_copy/deep_copy.baml
  • baml_language/crates/baml_tests/baml_src/ns_defer/defer.baml
  • baml_language/crates/baml_tests/baml_src/ns_enums/enums.baml
  • baml_language/crates/baml_tests/baml_src/ns_exceptions/exceptions.baml
  • baml_language/crates/baml_tests/baml_src/ns_floats/floats.baml
  • baml_language/crates/baml_tests/baml_src/ns_for_loops/for_loops.baml
  • baml_language/crates/baml_tests/baml_src/ns_fs/fs.baml
  • baml_language/crates/baml_tests/baml_src/ns_functions/functions.baml
  • baml_language/crates/baml_tests/baml_src/ns_future_methods/future_methods.baml
  • baml_language/crates/baml_tests/baml_src/ns_gc/gc.baml
  • baml_language/crates/baml_tests/baml_src/ns_glob/glob.baml
  • baml_language/crates/baml_tests/baml_src/ns_http_server/http_server.baml
  • baml_language/crates/baml_tests/baml_src/ns_if_else/if_else.baml
  • baml_language/crates/baml_tests/baml_src/ns_instantiation_expr/instantiation_expr.baml
  • baml_language/crates/baml_tests/baml_src/ns_interfaces/interfaces.baml
  • baml_language/crates/baml_tests/baml_src/ns_interfaces/interfaces_2.baml
  • baml_language/crates/baml_tests/baml_src/ns_interfaces/interfaces_3.baml
  • baml_language/crates/baml_tests/baml_src/ns_interfaces_associated_types/interfaces_associated_types.baml
  • baml_language/crates/baml_tests/baml_src/ns_ints/ints.baml
  • baml_language/crates/baml_tests/baml_src/ns_is_operator/is_operator.baml
  • baml_language/crates/baml_tests/baml_src/ns_iter/iter.baml
  • baml_language/crates/baml_tests/baml_src/ns_iter_impl_generics_only/iter.baml
  • baml_language/crates/baml_tests/baml_src/ns_json_alias/json_alias.baml
  • baml_language/crates/baml_tests/baml_src/ns_json_auto_derive/json_auto_derive.baml
  • baml_language/crates/baml_tests/baml_src/ns_json_parse_stringify/json_parse_stringify.baml
  • baml_language/crates/baml_tests/baml_src/ns_json_to_from_string/json_to_from_string.baml
  • baml_language/crates/baml_tests/baml_src/ns_lambdas/lambdas.baml
  • baml_language/crates/baml_tests/baml_src/ns_lexical_scoping/lexical_scoping.baml
  • baml_language/crates/baml_tests/baml_src/ns_maps/maps.baml
  • baml_language/crates/baml_tests/baml_src/ns_match_arm_break_continue/match_arm_break_continue.baml
  • baml_language/crates/baml_tests/baml_src/ns_match_basics/match_basics.baml
  • baml_language/crates/baml_tests/baml_src/ns_match_optimization/match_optimization.baml
  • baml_language/crates/baml_tests/baml_src/ns_match_types/match_types.baml
  • baml_language/crates/baml_tests/baml_src/ns_null_handling/null_handling.baml
  • baml_language/crates/baml_tests/baml_src/ns_operators/operators.baml
  • baml_language/crates/baml_tests/baml_src/ns_optional_function_parameters/optional_function_parameters.baml
  • baml_language/crates/baml_tests/baml_src/ns_parse_companions/parse_companions.baml
  • baml_language/crates/baml_tests/baml_src/ns_patterns_new_runtime/patterns_new_runtime.baml
  • baml_language/crates/baml_tests/baml_src/ns_property_shorthand/property_shorthand.baml
  • baml_language/crates/baml_tests/baml_src/ns_reflect_type_of/reflect_type_of.baml
  • baml_language/crates/baml_tests/baml_src/ns_reflect_type_of_generic/reflect_type_of_generic.baml
  • baml_language/crates/baml_tests/baml_src/ns_shell/shell.baml
  • baml_language/crates/baml_tests/baml_src/ns_soundness/soundness.baml
  • baml_language/crates/baml_tests/baml_src/ns_spawn_basic/spawn_basic.baml
  • baml_language/crates/baml_tests/baml_src/ns_spawn_name_object/spawn_name_object.baml
  • baml_language/crates/baml_tests/baml_src/ns_spawn_semantics/spawn_semantics.baml
  • baml_language/crates/baml_tests/baml_src/ns_spawn_throws/spawn_throws.baml
  • baml_language/crates/baml_tests/baml_src/ns_streaming_sse_primitives/streaming_sse_primitives.baml
  • baml_language/crates/baml_tests/baml_src/ns_strings/strings.baml
  • baml_language/crates/baml_tests/baml_src/ns_task_group/task_group.baml
  • baml_language/crates/baml_tests/baml_src/ns_time/time.baml
  • baml_language/crates/baml_tests/baml_src/ns_type_error_repro/type_error_repro.baml
  • baml_language/crates/baml_tests/baml_src/ns_type_reflection/type_reflection.baml
  • baml_language/crates/baml_tests/baml_src/ns_typed_inputs/typed_inputs.baml
  • baml_language/crates/baml_tests/baml_src/ns_typed_outputs/typed_outputs.baml
  • baml_language/crates/baml_tests/baml_src/ns_while_loops/while_loops.baml
  • baml_language/crates/baml_tests/baml_src/ns_wildcard_type_inference/wildcard_type_inference.baml
  • baml_language/crates/baml_tests/tests/instantiation_interning.rs
  • baml_language/crates/baml_tests/tests/interfaces.rs
  • baml_language/crates/baml_type_runtime/src/lib.rs
  • baml_language/crates/bex_vm/src/package_baml/mod.rs
  • baml_language/crates/bex_vm/src/package_baml/ops.rs
  • baml_language/crates/bex_vm/src/package_baml/resolve.rs
  • baml_language/crates/bex_vm/src/package_baml/root.rs
  • baml_language/crates/bex_vm/src/package_baml/type_class.rs
  • baml_language/crates/bex_vm/src/package_load.rs
  • baml_language/crates/bex_vm/src/vm.rs
  • baml_language/crates/bex_vm/tests/bigint_equality.rs
  • baml_language/crates/bex_vm/tests/deep_equals_bigint.rs
  • baml_language/crates/bex_vm/tests/load_type.rs
  • baml_language/crates/bex_vm/tests/ops_comparison.rs
  • tools/sdk-parity-lint/baml_src/baseline.baml
  • tools/sdk-parity-lint/baml_src/render.baml
💤 Files with no reviewable changes (5)
  • baml_language/crates/baml_builtins2_codegen/src/codegen.rs
  • baml_language/crates/bex_vm/src/vm.rs
  • baml_language/crates/baml_builtins2/baml_std/baml/type_class.baml
  • baml_language/crates/bex_vm/src/package_load.rs
  • baml_language/crates/bex_vm/src/package_baml/type_class.rs

It is now redundant as `==`/`baml.ops.Equals`/`baml.ops.equals_equals`
performs deep equality and allows equality to be user-overridable.
Its implementation was incorrect, and there is no viable way to
implement it as there are an unbounded number of generic type variations
that could implement a given interface instantiation. While answering
"does this type implement this interface" is usually tractable,
attempting to enumerate all implementors is not.
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@2kai2kai2
2kai2kai2 enabled auto-merge August 11, 2026 19:22
@2kai2kai2
2kai2kai2 added this pull request to the merge queue Aug 11, 2026
Merged via the queue into canary with commit 4cac89b Aug 11, 2026
148 of 150 checks passed
@2kai2kai2
2kai2kai2 deleted the kai/stdlib branch August 11, 2026 19:56
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