Releases: GiridharSalana/laykit
Releases · GiridharSalana/laykit
v0.0.5
v0.0.4
Unified layout I/O (load, load_library, Library), LaykitError, OASIS CBLOCK decompression, full streaming element parsing, and property preservation in GDSII/OASIS conversion.
v0.0.3
chore: bump version to 0.0.3
v0.0.1
Changelog
[0.0.1] - 2026-04-12
Initial release.
Added
- GDSII read/write — all element types (Boundary, Path, Text, StructRef, ArrayRef, Node, Box)
- OASIS read/write — all element types (Rectangle, Polygon, Path, Trapezoid, CTrapezoid, Circle, Text, Placement)
- Bidirectional format conversion (GDSII ↔ OASIS)
- Geometry module — bounding box, polygon area/perimeter/centroid, point-in-polygon, affine transforms, mirror, fillet, fracture
- Boolean operations — union, intersection, difference, XOR, polygon slice, offset, convex hull
- FlexPath — flexible paths with miter/bevel/round joins and flush/half-width/extended/round end caps
- Curve primitives — arc, quadratic/cubic/smooth Bezier, elliptical arc, spline interpolation, regular polygon, ellipse, rounded rectangle, star, spiral
- Topology utilities — cell flatten, dependency order, top-level cell detection, cycle detection, hierarchy validation, library merge
- Streaming parser — process large GDSII files without loading into memory
- Array reference expansion (AREF → individual SREFs)
- Property builders and managers for GDSII and OASIS metadata
- File format detection by magic bytes
- CLI tool —
convert,info,validatecommands - 164 tests, zero external dependencies
v0.0.0 - Production-Ready GDSII and OASIS Library
GDS_OAS v0.0.0
Production-ready Rust library for GDSII and OASIS IC layout file formats.
Downloads
Pre-built binaries with examples are available for:
- Linux (x86_64)
- Windows (x86_64)
- macOS (x86_64 and ARM64)
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[0.1.0] - 2025-11-13
Added
- ✅ Complete GDSII file format support (read/write)
- ✅ Complete OASIS file format support (read/write)
- ✅ All GDSII element types: Boundary, Path, Text, StructRef, ArrayRef, Node, Box
- ✅ All OASIS element types: Rectangle, Polygon, Path, Trapezoid, CTrapezoid, Circle, Text, Placement
- ✅ GDSII transformation support (STrans: rotation, scaling, mirroring)
- ✅ Format conversion utilities (GDSII ↔ OASIS bidirectional)
- ✅ Variable-length integer encoding/decoding (zigzag for signed)
- ✅ Name table management for OASIS
- ✅ Comprehensive test suite (21 tests including round-trip, edge cases)
- ✅ Zero compiler warnings
- ✅ Targeted test assertions
- ✅ Edge case coverage (negative coords, large values, empty cells)
- ✅ Production-level documentation (comprehensive README)
- ✅ Complete API reference with examples
- ✅ Performance benchmarks and optimization tips
- ✅ Detailed technical specifications
- ✅ Two example programs demonstrating usage
- ✅ Full API documentation
Features
- Zero external dependencies (pure Rust std)
- Production-ready GDSII & OASIS support
- Binary format handling with proper encoding
- Hierarchical layout support
- Property metadata support
- OASIS round-trip tested (write then read)
- Rectangle detection from polygons
Fixed (v0.1.0 final)
- OASIS element reading within cells
- OASIS info byte handling in records
- OASIS coordinate mode record handling
- All OASIS tests passing
- All compiler warnings eliminated
- Type conversion issues in tests
- Proper cleanup in test cases
Known Limitations
- Array reference expansion not yet implemented
- Streaming parser for large files not yet available
- Advanced property handling to be enhanced
[Unreleased]
Planned for v0.2.0
- Streaming parser for large files (>1GB)
- Command-line tool for file conversions
- Array reference (AREF) expansion
- Enhanced property handling
- Performance optimizations (SIMD, parallelization)
- Layout validation utilities
- Additional OASIS element types (trapezoids, circles)
- Batch file conversion utilities
Full Changelog: https://github.com/GiridharSalana/laykit/commits/v0.0.0