Major improvements after 4+ years of dormancy.
🎉 New Features
- String-based parsing API:
abaqus_parse_mesh()andabaqus_parse_model()- Parse directly from string buffers without file I/O
- Better for testing and programmatic use
- Element database externalization: Moved to
data/abaqus_elements.toml- Easy to extend without code changes
- Simple TOML format for adding new element types
🐛 Bug Fixes
- Fixed parser to properly handle ABAQUS boolean flags (
NLGEOM,PERTURBATION) - Fixed
FREQUENCYparser to handle optional parameters with NaN - Changed
parse_abaqus()to accept any IO type instead of just IOStream
🧪 Testing & Quality
- Increased test coverage: 192 tests (up from 140)
- Added comprehensive test suites:
test_element_database.jl(36 tests)test_model_sections.jl(55 tests)
- String-based tests eliminate need for temporary files
- New coverage analysis scripts for developers
📚 Documentation
- Fixed documentation deployment (broken since 2020)
- Documentation now auto-deploys: https://ahojukka5.github.io/AbaqusReader.jl/dev/
- Added API documentation for new parsing functions
- Modernized project structure and workflows
🏗️ Infrastructure
- Updated LICENSE copyright to Jukka Aho (2017-2025)
- Migrated to modern Julia practices (Julia 1.0+)
- Removed deprecated dependencies (Nullables.jl)
- CI improvements: Julia 1.6 LTS allowed to fail gracefully
- Modernized TagBot workflow with proper permissions
📦 Installation
using Pkg
Pkg.add("AbaqusReader")🚀 Quick Start
using AbaqusReader
# For mesh-only parsing (simple Dict)
mesh = abaqus_read_mesh("model.inp")
# For complete model parsing (structured Model object)
model = abaqus_read_model("model.inp")
# New: Parse from string buffer
inp_content = read("model.inp", String)
model = abaqus_parse_model(inp_content)This release brings the package back to life with modern Julia idioms, better testing, working documentation, and a cleaner API. 🎊