Skip to content

Conversation

@AjayBrahmakshatriya
Copy link
Collaborator

This PR merges some big changes:

  1. Run state separation: BuildIt for it re-runs maintains a set of different states (local to each run, shared across executions, shared across non-deterministic runs). Those states were all packed into a single builder_context object which made resetting certain parts tricky and sharing state like memoization maps. To untangle this whole mess we now have 3 different run state types for different levels of re-runs. The builder_context now just has the user parameters and the interface functions. This as a side effect allows reusing context objects. This change was necessary to implement nd_vars cleanly
  2. c_code_generator clean up. c_code_generator now prints arbitrary types properly including arrays/functions/pointers/references and their arbitrary nesting
  3. signature extract has been rewritten to clean up the nested struct types and use tuples for holding separate parameter packs. Makes the code easier to read. We also got rid of heap allocated arguments through assume_variable. This also solves the argument to the entry function copy problem.
  4. nd_vars API has been rewritten to now only support data-flow lattices which is cleaner and technically the only feasible use case for this API.
  5. dyn_var now has a constructor from std::vector to automatically initialize an array
  6. annotations are now a set instead of a single string making it a more flexible API
  7. Deprecated/removed: foreign expressions, assume_variables.

@AjayBrahmakshatriya AjayBrahmakshatriya merged commit fdbe2c7 into BuildIt-lang:master Oct 16, 2025
2 checks 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