Releases: nicklockwood/ShapeScript
Releases · nicklockwood/ShapeScript
1.3.1
- Disabled axes by default and added instructions for enabling to help
- Added ordinal members for accessing arbitrary tuple elements
- Fixed rendering bug when using negative scale values
- Fixed bug where functions were able to access local variables of the caller
- Fixed dot operator (member lookup) chaining
- Added documentation for tuples and structured data access
- Bumped Euclid to 0.5.11, which includes several performance optimizations
- Fixed issue where console would not clear correctly when reloading
- Fixed hint message when missing closing brace
- Added
colour
andgrey
as aliases forcolor
andgray
- Made stroke line width proportional to the scene size
- Improved logic for default camera zoom level
- Increase antialiasing quality in viewer
- Updated screenshots and fixed bugs in help examples
1.3.0
- Added new standalone range expression with optional
step
value - For loops can now be used with either range or tuple/vector values
- Added support for hex color literals
- Added standard color names as constants
- Inherited standard library symbols no longer override user-defined constants
- All ShapeScript value types now conform to
AnyHashable
- Removed
CustomStringConvertible
conformance fromGeometryType
as it made debugging harder - Renamed
StatementType.node
toStatementType.block
, since the term was confusing - Bumped Euclid to 0.5.10, which includes several bug fixes and features
- Fixed crash when trying to access vector or color members from a non-numeric tuple
- Fixed crash when trying to color members from a tuple with more than 4 elements
- Accessing vector members on a tuple with more than 3 elements now raises an error
- Made unchecked Color initializer private
- Removed SceneViewController.snapshot() method
- Added option to show axes in ShapeScript Viewer
- Wireframe view option in viewer is now rendered using lines instead of SceneKit Debug option
- Made wireframe view option persistent across app launches
1.2.4
- Fixed a crash when logging large integer values
- Fixed bug where negative numbers would be logged as zero when using the print command
- Improved formatting of logged numeric values generally
1.2.3
- Enabled parenthesized expressions to span multiple lines
- Improved error message when assigning multiple values to single type
- Fixed assigning color literal value to background without parens
- Added Color initializers
- Added SceneViewController.snapshot() method
1.2.2
- Blocks that accept child values can now be called without braces around them
- Fixed confusing error messages caused by mesh commands being unavailable in certain scopes
- Made script evaluation cancellable in case of infinite iteration or recursion
- Fixed bug in Viewer app where view fails to refresh after loading geometry
- Improved and simplified error handling logic
1.2.1
- Fixed crash when
for
loop end index < start index - Improved
print
log output, especially for arrays/tuples and nested values - Added
Loggable
protocol for stringifying values logged using the ShapeScriptprint
command - Replaced
TokenType.description
withTokenType.errorDescription
to aid debugging - Text now supports using \n for line-breaks (this was documented as working, but never implemented)
- Fixed confusing error message when first value of tuple matches expected type
- Fixed nonsensical error message when a command is used in an expression
- Bumped Euclid to 0.5.9, which includes fixes for extruded paths
- Extruding along a compound path now forms a union between the resultant shapes
- Fixed typos and improved help documentation
- Fixed member lookup precedence
- Improved test coverage
1.2.0
- Improved progressive rendering logic, reducing wait before seeing first results in viewer
- Geometry cache is now limited to ~1GB per open document instead of being unbounded
- Cached geometry is now cleared when document is closed instead of persisting for app lifetime
- Invalid font names now produce an error instead of silently falling back to Helvetica
- Paths are now drawn in white when background is set to a dark color or texture
- Fixed an index out-of-bounds crash in the Levenshtein distance function
- Bumped Euclid to 0.5.8, which includes several bug fixes
- Renamed
GeometryType.none
to the more descriptiveGeometryType.group
- Made
Geometry.mesh
andGeometry.associatedData
properties thread-safe usingNSLock
- Removed
Scene.deepCopy()
andGeometry.deepCopy()
methods as instances are now thread-safe - Moved selection logic out of
ShapeScriptLib
and into Viewer example application - Fixed bug in Viewer where geometries would be deselected during progressive loading
- Added LRUCache dependency
1.1.6
- Paths are now drawn using polygons strips, which looks sharper and renders more consistently
- Made further improvements to cancelling in-progress rendering when reloading a file
- Bumped Euclid to 0.5.4, which includes several bug fixes and performance improvements
- Improved performance when rendering scenes with nested CSG operations or groups
- Fixed rendering and bounds calculation of non-planar extruded shapes
1.1.5
- Info window in ShapeScript Viewer no longer included imported models in texture count
- Fixed a regression in ShapeScript Viewer 1.1.4 where error message wouldn't refresh correctly on reload
- Improved error messaging for errors that occur in an imported file
- Reloading a partially-rendered scene should now terminate the rendering more quickly, freeing up CPU
- Rendering is now cancelled when document is closed (previously it continued in background)
- Improved responsiveness of incremental rendering for complex scenes
- Program
source
andstatements
properties are now public
1.1.4
- Increased time precision of document file monitoring in ShapeScript Viewer app
- Improved threading a progress logging in ShapeScript Viewer app
- Added Linux support for ShapeScriptLib (excluding rendering and text functions)
- Made static color constants immutable
- Bumped Euclid version to 0.5.3