Version 2.10 Release Notes
Version 2.10.2 (May 7, 2026)
Fixed C++ Module: linkBudget pointing-loss frame handling so
AntennaLogMsgPayload.sigma_ANantenna orientations are interpreted consistently with C++ Module: simpleAntenna.Fixed a C++ Module: vizInterface
noDisplayimage request regression that could stop OpNav scenarios when communicating with Vizard.
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__ attributewarnings upgrade to SWIG 4.4.1Cleaned 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.MultiSphereVectorsupport; usevizInterface.MultiShapeVector.Removed deprecated
vizInterface.MultiSphereandvizInterface.MultiSphereInfoaliases; usevizInterface.MultiShapeandvizInterface.MultiShapeInfo.dragDynamicEffector,facetDragDynamicEffector, andcannonballDragnow accept an optionalwindVelInMsg(WindMsgPayload) to compute atmosphere-relative drag velocity; supersedes the formeruseAtmosphereRelativeVelocity/planetOmega_Nflags.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
pytestoptional flagshow_plots.
Build, installation, and CI
Added a
Dockerfileto 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
sccachecompiler caching to CI builds to speed up incremental C++ compilation. See Building the Software Framework for how to usesccachelocally.Updated Python packaging metadata to use the PEP 639 license fields and require a newer setuptools version that supports them.
Added an
examplesoptional dependency set so users can install example-only Python packages withpip install "bsk[examples]"orpip install -e ".[examples]".Added a matching
python conanfile.py --examples Truebuild option for source checkouts, with example dependencies enabled by default and--examples Falseavailable to skip them.Removed the default
--cleanflag fromsetup.pyto allow for incremental pip wheel builds.Updated
conanfile.pyto passcompiler.cstd=gnu17during Conan build step to avoidcspice/0067build failures on newer GCC 15 based Linux toolchains.
Simulation framework and module development
Added documentation for the
bsk-sdkextension system, covering how to install, write, and distribute out-of-tree Basilisk extensions as standard Python wheels.Fixed
PythonVariableLoggerto resume logging correctly afterReset(), reject negativemin_log_periodvalues, and support indexed access for logged names that collide with class attributes such astimes.
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
sunEclipseInMsginput 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.pyto 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
spicePlanetFramesdescribing defaultIAU_*behavior, supported alternatives such asITRF93andJ2000, and how frame-association FK kernels interact with this setting.Improved
gravityEffectorgravity-coefficient loading to always include the requested highest degree and consistently enforcemaxDegtruncation.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
Added C++ Module: hillFrameRelativeControl, a Hill-frame PD controller that computes an inertial force command to track deputy relative position and velocity with respect to a chief spacecraft.
Added C++ Module: thrJointCompensation, a module to compute the motor torques required to prevent joint acceleration during thruster firing for systems with attached thruster arms.
Fixed C++ Module: thrJointCompensation hinged joint control sign convention so that the computed compensation torque is applied in the correct direction.
Added C++ Module: stripLocation to support the strip imaging mode.
Updated C Module: locationPointing to include the new strip imaging mode.
Added new tests in
test_locationPointing.pyto verify the new strip imaging mode.Created new message StripStateMsgPayload to interface C Module: locationPointing with the new C++ Module: stripLocation.
Added the scenario scenarioStripImaging showing how to perform strip imaging tasks.
Added C++ Module: linkBudget, a communication module that computes link Carrier-to-Noise Ratio (CNR) between two antennas including FSPL and optional atmospheric, pointing, and frequency-offset losses.
Warnings for not connected messages of types:
sunInMsg,planetInMsg,sunEclipseInMsgin the C++ Module: simpleAntenna module for ground based antennas are not raised anymore.Added C++ Module: inertialCartFeedback module to compute an inertial-frame relative motion feedback control force
Added C++ Module: orbElemOffset, a classical orbital element combiner that applies element offsets to a baseline orbit and supports optional interpretation of the anomaly offset as a mean-anomaly increment.
MuJoCo and stochastic integration
[BETA] Stochastic Integration: Added support for stochastic dynamics (dynamics driven by Stochastic Differential Equations).
[BETA] Stochastic Integration: Added stochastic dynamics support in core dynamics infrastructure (
DynamicObject,StateData, andDynParamManager), including diffusion propagation APIs and support for shared noise sources.[BETA] Stochastic Integration: Added diffusion dynamics task support to
MJSceneviaAddModelToDiffusionDynamicsTask()for MuJoCo systems with stochastic state dynamics.[BETA] Stochastic Integration: Added stochastic integrator base classes
StateVecStochasticIntegrator.[BETA] Stochastic Integration: Added
svIntegratorWeakStochasticRungeKuttato support stochastic integrator implementations.[BETA] Stochastic Integration: Added svStochasticIntegratorMayurama (Euler-Mayurama), a 1-weak/1-strong stochastic integrator.
[BETA] Stochastic Integration: Added two stochastic integrators: svStochasticIntegratorW2Ito1 and svStochasticIntegratorW2Ito2. These are 2-weak-order stochastic integrators.
[BETA] Stochastic Integration: Added MuJoCo models (C++ Module: meanRevertingNoise, C++ Module: stochasticAtmDensity, and C++ Module: stochasticDragCoeff) to model mean-reverting stochastic processes in dynamics-task modules.
[BETA] Stochastic Integration: Added C++ Module: meanRevertingNoiseStateEffector, a generic spacecraft state effector that propagates a scalar Ornstein-Uhlenbeck mean-reverting stochastic state.
[BETA] Stochastic Integration: Added scenarioStochasticDrag and scenarioStochasticDragSpacecraft, which illustrate how to use a state driven by stochastic dynamics to model randomly evolving atmospheric density (and thus drag force). The former scenario uses MuJoCo dynamics and the latter spacecraft dynamics.
[BETA] Stochastic Integration: Added optional density correction support to C++ Module: dragDynamicEffector through
densityCorrectionStateName, allowing drag density to be computed as(1 + correction) * neutralDensityusing a user-selected scalar state.Added C++ Module: thrOnTimeToForce module to convert thruster on-times to thruster forces for use in MuJoCo scenes
Added scenarioThrArmControl, a MuJoCo example scenario for spacecraft control using thruster arms.
Added DragGeometryMsgPayload, which contains geometry information of a body necessary to compute the drag acting on such body.
Added C++ Module: cannonballDrag, a model intended to be used with MuJoCo dynamics to model cannonball aerodynamic drag forces and torques acting on bodies.
Added C++ Module: linearTimeInvariantSystem. This module implements a linear time-invariant system using state-space representation. It can be used to model linear systems in the dynamics task of
MJScene. This model is abstract: subclasses must specify how the input vector is read from input messages, and the output vector is written to output messages. Subclasses can be implemented in Python.Added singleActuatorLTI: a single-input single-output subclass of C++ Module: linearTimeInvariantSystem whose input and output is a SingleActuatorMsgPayload.
Added forceAtSiteLTI: a subclass of C++ Module: linearTimeInvariantSystem whose input vector is read from a ForceAtSiteMsgPayload and output vector is written to a ForceAtSiteMsgPayload.
Added CmdForceInertialToForceAtSite, a module that rotates inertial-frame force commands into a site-fixed ForceAtSiteMsgPayload.
Added OrbitalElementControl, a C++ Module: linearTimeInvariantSystem subclass that computes orbital-element feedback and outputs inertial force commands through CmdForceInertialMsgPayload.
Added scenarioFormationFlyingWithDrag, a MuJoCo example scenario for chief-deputy formation flying in LEO with differential cannonball drag and orbital-element feedback control.
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_CACHEenvironment variable todataFetcher.pyto 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/bskReleaseNotesSnippetsfolder. A README.md file there explains how to do this.Updated documentation on how to use
bskExamplesto download a copy of the tutorial examplesFixed 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