Version 2.10 Release Notes

Version 2.10.2 (May 7, 2026)

Version 2.10.1 (April 26, 2026)

  • Updated SWIG dependency support to allow compatible latest SWIG releases while excluding SWIG 4.4.0 due to compile regressions observed during testing. If you are getting lots of builtin type swigvarlink has no __module__ attribute warnings upgrade to SWIG 4.4.1

  • Cleaned up pytest resource handling so parallel test runs with pytest-xdist and pytest-rerunfailures no longer report unclosed socket warnings.

  • Fixed a potential stack buffer overflow in C++ Module: vizInterface by rejecting default celestial body names that exceed the fixed SPICE payload name storage.

  • Fixed a potential heap buffer overflow in C++ Module: mappingInstrument by rejecting mapping point names that exceed the fixed data node name storage.

  • Fixed a potential format string vulnerability in C++ Module: dentonFluxModel when reporting missing Denton data files.

  • Hardened Basilisk module string handling and logging against fixed-buffer overflow and format-string misuse.

  • Hardened build and helper utilities against shell command injection, unsafe temporary file cleanup, unbounded downloads, and malformed image buffer lengths.

Version 2.10.0 (April 2, 2026)

Compatibility and migration

  • Removed deprecated vizInterface.MultiSphereVector support; use vizInterface.MultiShapeVector.

  • Removed deprecated vizInterface.MultiSphere and vizInterface.MultiSphereInfo aliases; use vizInterface.MultiShape and vizInterface.MultiShapeInfo.

  • dragDynamicEffector, facetDragDynamicEffector, and cannonballDrag now accept an optional windVelInMsg (WindMsgPayload) to compute atmosphere-relative drag velocity; supersedes the former useAtmosphereRelativeVelocity/planetOmega_N flags.

  • Removed Python 3.8 support from the build and CI configuration, and marked Python 3.9 support as deprecated for removal after March 2027.

  • Deprecated the pytest optional flag show_plots.

Build, installation, and CI

  • Added a Dockerfile to build Basilisk container images. See Containers for usage details.

  • Prebuilt multi-architecture (linux/amd64, linux/arm64) container images are now published to GHCR on each release tag.

  • Added Python 3.14 support across packaging and CI.

  • Updated platform install guides to document Basilisk support for Python 3.14.

  • Added sccache compiler caching to CI builds to speed up incremental C++ compilation. See Building the Software Framework for how to use sccache locally.

  • Updated Python packaging metadata to use the PEP 639 license fields and require a newer setuptools version that supports them.

  • Added an examples optional dependency set so users can install example-only Python packages with pip install "bsk[examples]" or pip install -e ".[examples]".

  • Added a matching python conanfile.py --examples True build option for source checkouts, with example dependencies enabled by default and --examples False available to skip them.

  • Removed the default --clean flag from setup.py to allow for incremental pip wheel builds.

  • Updated conanfile.py to pass compiler.cstd=gnu17 during Conan build step to avoid cspice/0067 build failures on newer GCC 15 based Linux toolchains.

Simulation framework and module development

  • Added documentation for the bsk-sdk extension system, covering how to install, write, and distribute out-of-tree Basilisk extensions as standard Python wheels.

  • Fixed PythonVariableLogger to resume logging correctly after Reset(), reject negative min_log_period values, and support indexed access for logged names that collide with class attributes such as times.

Spacecraft dynamics and effectors

  • Fixed C++ Module: reactionWheelStateEffector mixed-model wheel logging so theta outputs are indexed correctly when balanced and jitter wheel models are used together.

  • Added a new C++ Module: facetedSpacecraftModel module to convert spacecraft facet geometry from the local facet frames to the spacecraft hub body frame. The module supports both fixed facets and single-axis articulating facets.

  • Added a new C++ Module: facetedSpacecraftProjectedArea module to compute the per-facet and total projected area of a faceted spacecraft model using a provided heading direction vector. The module supports three heading configuration options: direct general heading, Sun direction heading, and spacecraft inertial velocity heading.

  • Added optional sunEclipseInMsg input to C++ Module: facetSRPDynamicEffector so that eclipse shadow conditions scale the SRP force and torque by the illumination factor.

Environment, gravity, and ephemerides

  • Updated tleHandling to map TLE mean elements in TEME to Basilisk osculating elements in J2000/ICRS and to generate TLEs using an SGP4-consistent mean-element iteration.

  • Fixed how the gravity spherical harmonic coefficient are loaded in loadGravFromFile(). They were hard coded to 2nd order.

  • Updated tleHandling TLE parsing to fail explicitly on unsupported catalog-ID encodings.

  • Added tests in test_readTLE.py to validate rejection of unsupported catalog-ID encoding.

  • Updated scenarioDragDeorbit, scenarioDragRendezvous, scenarioAerocapture, and scenarioStochasticDragSpacecraft to illustrate optional use of wind velocity input.

  • Added C++ Module: windBase abstract base class and C++ Module: zeroWindModel concrete implementation. The base class now handles co-rotating atmosphere calculations, while the zero wind model represents conditions with no additional wind perturbations beyond atmospheric co-rotation.

  • Added missing docstring to gravBodyFactory.createSpiceInterface() that prevented it from being built.

  • Added a detailed note for spicePlanetFrames describing default IAU_* behavior, supported alternatives such as ITRF93 and J2000, and how frame-association FK kernels interact with this setting.

  • Improved gravityEffector gravity-coefficient loading to always include the requested highest degree and consistently enforce maxDeg truncation.

  • Updated spherical-harmonic coefficient parsing to map values by explicit (degree, order) indices, handle missing entries as zero-filled terms, and reject duplicate or malformed rows.

  • Added C++ Module: spacecraftChargingEquilibrium module to solve coupled servicer/target equilibrium potentials with electron-beam current coupling.

  • TLE parsing fixed to be robust to file ending issues between LF and CRLF.

  • Updated the World Magnetic Model (WMM) Coefficients file to the 2025 version.

Sensors and flight software

MuJoCo and stochastic integration

Visualization and data handling

  • Updated C++ Module: vizInterface to bind to all network interfaces (0.0.0.0) by default, enabling Vizard connectivity when Basilisk is running inside a container.

  • Added BSK_SUPPORT_DATA_CACHE environment variable to dataFetcher.py to allow overriding the default Pooch cache directory for support data files. See Adding Support Data Files for details.

  • Local data fetches fall back to using the pooch fetch if local files are not found.

  • No longer prefetch ephemeris data kernels on initial local builds. The data fetcher will handle it.

  • Added Importing External Data Sources to explain how to import Basilisk provided data

Documentation, examples, and validation

  • Added a new scenario, scenario_FaultList, that demonstrates the use of the fault modeling capabilities by selecting faults from BSK_Faults.

  • Update the developer workflow on how release notes are added. The new method now adds small release notes RST snippets into docs/source/Support/bskReleaseNotesSnippets folder. A README.md file there explains how to do this.

  • Updated documentation on how to use bskExamples to download a copy of the tutorial examples

  • Fixed range of grammatical typos in the Basilisk documentation

  • Ensure the HTML documentation figures from the example scenario look more consistent

  • Avoid a memory leak when saving off figures in the CI Unit tests to build the online documentation