Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ricosjp/ruststep
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Choose a base ref
...
head repository: KittyCAD/ruststep
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 3 commits
  • 39 files changed
  • 2 contributors

Commits on Jul 3, 2025

  1. Configuration menu
    Copy the full SHA
    aa501e8 View commit details
    Browse the repository at this point in the history

Commits on Dec 19, 2025

  1. Update dependabot config (#12)

    * Update dependabot config from KittyCAD/ciso
    
    * Update dependabot config from KittyCAD/ciso
    maxammann authored Dec 19, 2025
    Configuration menu
    Copy the full SHA
    0a01fbf View commit details
    Browse the repository at this point in the history

Commits on Feb 6, 2026

  1. Bring main up to speed (#14)

    * Increase recursion limit
    
    * Generate entity fields recursively
    
    * Regenerate ap203.rs
    
    Regenerated with:
    
    cargo run \
        --bin esprc \
        schemas/APs/10303-203-aim-long.exp \
        | rustfmt \
        > ruststep/src/ap203.rs
    
    * Fix warnings
    
    * Add #[holder(from = type)] attribute
    
    This is a workaround to pass type information from esprc
    to ruststep-derive. The purpose is to be able to populate
    fields of simple types directly like this:
    
    #1 = EDGE_CURVE('NONE', #165, #9, #187, .T.);
                    ^^^^^^
       will be parsed with deserialize_str
    
    * Add Derived type and attribute
    
    Adds support for derived attributes using a placeholder
    type called Derived.
    
    #1 = ORIENTED_EDGE('NONE', *, *, #2, .T.);
                               ^^^^
                    these are Derived values
    
    * Add quick fix for AXIS* type names
    
    The type name axis2_placement_3d was being converted to
    AXIS_2_PLACEMENT_3D instead of AXIS2_PLACEMENT_3D.
    
    * Implement complex entity instantiation
    
    Consider the following example:
    
    ENTITY base
          a: STRING
    END_ENTITY;
    
    ENTITY extended
       SUBTYPE OF (base);
          b: STRING
    END_ENTITY;
    
    A simple instantiation of the extended entity looks like this:
    
    #1 = EXTENDED('A', 'B')
    
    A complex instantiation allows each subtype to be instatiated
    separately like this:
    
    #1 = (BASE('A') EXTENDED('B'))
    
    This changes implements support for complex entity instantiation by
    cherry-picking fields across all the partial entities in the list. An
    complete instance of every entity in the list is then inserted into the
    table. In the example above, an instance of base and an instance of
    extended would be inserted into the table.
    
    The cherry-picking process is implemented with the help of a table of
    every field name for partial and complete entities.
    
    * Extend derived dimensions workaround to conversion_based_unit
    
    * Ignore data provided to derived attributes
    
    * Add extra aggregate_initializer test
    
    * Process field derivations
    
    This is yet another hack to accept derived fields of the form:
    
    ENTITY binary_numeric_expression
    	ABSTRACT SUPERTYPE
    	SUBTYPE OF (numeric_expression, binary_generic_expression);
    	SELF\binary_generic_expression.operands : LIST [2:2] OF numeric_expression;
    END_ENTITY;
    
    We need this information in the IR; however, it doesn't fit neatly
    within the existing code structure.
    
    * Fix hex_digit parser
    
    * Add binary literals to espr
    
    * Add Binary primitive type
    
    * Remove generated inner module
    
    * Regenerate ap203.rs
    
    Regenerated from slightly modified version of the official schema,
    version 1.43.
    
    Increased recursion limit to 512 to cope with documentation generation
    from the top-level directory.
    
    * Add ToData trait and proc_macro
    
    * Output literals for type declarations
    
    * End each line with a semicolon
    
    * Implement partial/complex entity export
    
    The implementation required a couple of new features:
    
    1. ToData::to_partial function
    
    This allows the generator to choose between serializing partial and
    standard entities. The following entities are equivalent:
    
     Standard: PLANE('X', #1)
     Partial: (ELEMENTARY_SURFACE('X', #1) PLANE())
    
    2. #[holder(supertype = "type_name")] attribute
    
    This is used by the automatically derived implementation of to_partial
    to select which fields should be serialized. Partial entity fields are
    serialized if they are not already defined by an existing supertype
    field.
    
    * Add ability to insert into generated tables
    
    The `Insert` trait is used to insert a holder type into a table.
    Extra `Insert` implementations are provided for tuples for the
    convenience of inserting complex/partial entity instances. This is
    limited to five partial entity insertions for now but can be increased
    easily by adding more implementations in the ruststep-derive crate.
    
    The user must ensure when inserting into tables that no value is
    already associated with a given ID or else panic ensues.
    
    * Fix test build
    
    * Fix parsing of empty lists
    
    * Fix build for older compilers
    
    * Fix unused variable warning
    
    * Forward visitors of renamed types
    
    * Fix ordering of partial entities
    
    BOUNDED_SURFACE needs to come before B_SPLINE_SURFACE.
    The '_' character is between the lowercase and uppercase
    sets, so sorting naively will produce different orderings.
    
    * Increase max partial entity insertion to 8
    
    * Pretty print complex entities
    
    Adds new lines between each partial entity.
    
    ---------
    
    Co-authored-by: David Harvey-Macaulay <david@harvey-macaulay.com>
    maxammann and David Harvey-Macaulay authored Feb 6, 2026
    Configuration menu
    Copy the full SHA
    8df71d3 View commit details
    Browse the repository at this point in the history
Loading