Public API and SemVer Scope
This note defines the public API and Semantic Versioning policy for TASOPT.jl starting from v3.0.
Stable public API
Only the symbols listed below are semver-protected.
Core model lifecycle
These are the key functions that are used while reading an aircraft model definition .toml file and sizing the aircraft. fly_mission! and balance_aircraft! let users evaluate ad-hoc scenarios outside the typical sizing routine.
Primary model types
Data and reporting helpers
Public configuration types and enums
StructuralAlloy,Conductor,Insulator,ThermalInsulatorEngineLocation,PropSysArch,WingMove,FuelType,TrimVar,TailSizing
Unit conversion and constants
convertMass,convertForce,convertDist,convertSpeed,convertPower,convertAnglegee,gamSL,cpSL,μAir,pref,Tref
This API still supports the main user workflow:
- Build or load a model (
read_aircraft_model/load_default_model). - Run sizing and mission analysis (
size_aircraft!,fly_mission!,balance_aircraft!). - Save and export results (
save_aircraft_model,output_csv, plotting helpers).
Note: Users can still call any submodule functions directly, but those calls are treated as advanced/internal use and are not semver-stable and can have updated syntax or behavior in minor releases.
Explicitly non-public API
The following are not semver-protected and may change in minor/patch releases:
__TASOPTindices__and symbols brought in viainclude(__TASOPTindices__). Refactoring these global arrays is a priority on the LAE development plan forTASOPT.jl.- Submodule exports and internals (for example,
TASOPT.engine.*,TASOPT.aerodynamics.*,TASOPT.CryoTank.*). - Non-listed top-level exports.
quicksave_aircraftandquickload_aircraft(JLD2 snapshot helpers).- CSV index helper exports (
default_output_indices,output_indices_all,output_indices_wGeom,output_indices_wEngine). - Internal struct field layouts unless explicitly documented in the stable list above.
- Internal solver, gas model, and mission iteration details.
SemVer policy that will be followed
MAJOR version bump required
- Breaking changes to any symbol in the stable public API list above.
MINOR version bump
- Adding new stable API symbols without breaking existing stable public API.
- Behavioral additions that are backward compatible for stable symbols.
- Changes to non-public internals and submodule exports.
PATCH version bump
- Bug fixes and internal refactors that do not break current submodule exports.
Release checklist
Before release, if yes to any item below, use a MAJOR bump:
- Did any stable-listed symbol in the public API list above disappear, rename, or break behavior?
- Did any stable-listed function reject previously valid calls?