Skip to main content

Soar

CMake Multi-Platform Build/Test

This is the code base for Soar, a cognitive architecture for developing systems that exhibit intelligent behavior. For more information about this project, please visit:

Note that the readme included with the Soar distribution for end-users is in the Release-Support repository.

Soar Builds

For binary builds of Soar you can get them in two places:

  • Official Releases — multiplatform zip including bin/win_x86-64, bin/linux_x86-64, bin/mac_x86-64, and bin/mac_ARM64 (Apple Silicon).
  • Latest development builds: the CMake-based release pipeline (cmake-multi-platform.yml) produces per-platform artifacts including ARM64 macOS. The SCons CI (build.yml) is also kept current but does not produce an ARM64 macOS artifact — use cmake-multi-platform.yml or build from source on Apple Silicon.

Soar Performance

Some performance statistics are calculated automatically using the Factorization Stress Tests. You can see performance on a commit-by-commit basis in Performance.md.

Disclaimer: These are worst case tests. Average performance is probably much higher. In addition, these show that even in worst case, Soar beats its goal of 50 msec reactivity (in these tests, the max is ~30msec per decision).

Development

Soar supports two build systems: CMake (see build with CMake) and scons (see build with scons). Both are kept in sync and produce binary-compatible artifacts that land in the same out/ and multi-platform install layout. The release zip is built by the CMake-based cmake-multi-platform.yml workflow.

The following table compares supported build features for Soar between the two build systems as of 9.6.5.

Feature Scons CMake
Soar dynamic lib ✅ ✅
Soar static lib ❌ ✅
Soar CLI ✅ ✅
Unit tests ✅ ✅
Performance tests ✅ ✅
External lib test ✅ ✅
SVS ✅ ✅
SWIG Python ✅ ✅
SWIG Java ✅ ✅
SWIG JavaScript ❌ ✅
SWIG C# ✅ ✅
SWIG Tcl ✅ ✅
Python package soar-sml ✅ ❌
Generate compile_commands.json ✅ ✅
Release ✅ ✅
Debug ✅ ✅
Debug with address sanitizer ❌ ✅
Conan package manager integration ❌ ✅
macOS ✅ ✅
Linux ✅ ✅
Windows ✅ ✅
Java Debugger build ✅ ✅

Prerequisites

The instructions below are cursory and may be out of date; the most up-to-date instructions for compiling Soar from source will always be the CI build scripts. The CMake-based release pipeline is cmake-multi-platform.yml; the SCons CI lives in build.yml.

To compile Soar, you will need the dependencies listed below. Note that the installation commands are not complete, e.g. missing instructions for Mac do not mean that the dependency is not needed on Mac, etc.:

  • C/C++ compiler
    • Mac: xcode-select --install
    • Linux: sudo apt-get install build-essential
  • Python
    • Mac: brew install python
  • Java
    • We recommend using SDKMan. The debugger, etc. require Java 11 at a minimum, but it's best to install the latest LTS. Temurin is recommended.

To compile the extra SML wrapper libs, you will need the following:

  • pkg-config
    • Mac: brew install pkg-config
    • Linux: sudo apt install pkgconf
  • SWIG
    • Mac: brew install swig
    • Linux: sudo apt install swig
  • Python development headers (only needed for Python wrapper)
    • Linux: sudo apt install python3-dev
  • C# compiler (csc) (only needed for C# wrapper)
    • Mac: brew install mono
  • Tcl (only needed for Tcl wrapper and TclSoarlib)
    • Mac: brew install tcl-tk

Build with Scons

The project supports generating compile_commands.json, which can be used by e.g. VSCode with the C/C++ plugin to provide IntelliSense. To generate this file, run scons with the cdb target:

   python3 scons/scons.py --scu --opt --verbose cdb

Note for M-series Mac users: you'll want to make sure you're compiling for ARM64, not x86_64. Sometimes users have Python installed in compatibility mode, leading to compiles for the wrong architecture. You can check which architecture your Python is built for using this:

import sysconfig
>>> print(sysconfig.get_config_vars())

You can also check your clang's default compile target using clang --version.

To compile everything for local development, you can use the following command:

   python3 scons/scons.py --scu --dbg --verbose all

Debug mode enables debugging, but also activates assertions, which are important for catching bugs early. --scu (single compilation unit) simplifies the debugging experience.

If you want an optimized build instead:

    python3 scons/scons.py --opt --verbose all

Build with CMake

The following prerequisites must be available:

  • CMake (>= 3.21)
  • Python 3, including pip, for the Conan package manager (pip install conan).
  • A C/C++ toolchain (Visual Studio 2022 / Xcode command-line tools / GCC or Clang).
  • For the Java debugger and SWIG-Java bindings: a JDK 11 or newer (Temurin recommended).
  • For SWIG bindings: SWIG (Windows users can install via choco install swig).

Once the dependencies are installed, install Conan dependencies once per build type (this fetches sqlite3, asio, and eigen from Conan Center):

conan install . --build=missing
conan install . --build=missing -s build_type=Debug

Then pick a preset that matches what you want to build. The most common presets for everyday development and CI are:

Preset What it builds
Release-test Release Soar + unit tests
Release-svs-test Release Soar with SVS + unit tests
Release-swig Release Soar + Java debugger + all SWIG bindings
Debug-test Debug Soar + unit tests (assertions on)
Debug-test-asan Debug Soar + unit tests + AddressSanitizer
Debug-swig-full Debug Soar + Java debugger + all SWIG bindings

Configure and build a preset:

cmake --preset Release-test
cmake --build --preset Release-test

Or run a full configure/build/test workflow in one step:

cmake --workflow --preset Release-test-workflow

compile_commands.json is generated automatically and picked up by VS Code's C/C++ extension, clangd, and other tools without further configuration. The VS Code CMake Tools extension integrates with these presets directly.

For the full list of presets:

cmake --list-presets
cmake --workflow --list-presets

See CMakePresets.json for the underlying definitions and build.sh / build.bat for one-shot wrapper scripts.

License

Soar is available under the following LICENSE. This license is BSD

Metadata

Release files for soar-sml 9.6.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for soar-sml 9.6.5
File
soar_sml-9.6.5-cp35-abi3-win_amd64.whl CPython 3.5 abi3 Windows x86-64 Details
soar_sml-9.6.5-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.5 abi3 Linux glibc 2.17+ x86-64 Details
soar_sml-9.6.5-cp35-abi3-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.5 abi3 Linux glibc 2.17+ x86-32 Details
soar_sml-9.6.5-cp35-abi3-macosx_11_0_arm64.whl CPython 3.5 abi3 macOS 11.0+ ARM64 Details
soar_sml-9.6.5-cp35-abi3-macosx_10_9_x86_64.whl CPython 3.5 abi3 macOS 10.9+ x86-64 Details

Total release size: 11.2 MB

Release files / soar_sml-9.6.5-cp35-abi3-win_amd64.whl

Download URL soar_sml-9.6.5-cp35-abi3-win_amd64.whl
Size 2.1 MB
Tags CPython 3.5 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
5825933e56bbc6a9bdc9b944deeece81f985d985552c4a17a27fbc7e651f438f
BLAKE2b-256 checksum
How to use checksums
5408277fbcf17282b3158a41806be961e5d42528a6e2d179452040c4750d5ca3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 6, 2026.

Transparency log

Release files / soar_sml-9.6.5-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL soar_sml-9.6.5-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags CPython 3.5 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
8445998dd6a74be8f4dc0a85714f369accb34272a797bdc954fba5de2f17f088
BLAKE2b-256 checksum
How to use checksums
8aff8064dc14bbbc5ef99e1f6b9009abf1d1f326db049daaa8c961a781745615
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 6, 2026.

Transparency log

Release files / soar_sml-9.6.5-cp35-abi3-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL soar_sml-9.6.5-cp35-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Size 2.6 MB
Tags CPython 3.5 Linux glibc 2.17+ x86-32 abi3
SHA-256 checksum
How to use checksums
a0a1791f9b77aa329a620ab8d5f34fff3f0ccd5cad1088faa7c79e1dbc5fbce9
BLAKE2b-256 checksum
How to use checksums
795ad20b2b9c7b6ef434bf1b43ad2dd9be2fe2bbc4a424eb0ca5688ea3f27940
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 6, 2026.

Transparency log

Release files / soar_sml-9.6.5-cp35-abi3-macosx_11_0_arm64.whl

Download URL soar_sml-9.6.5-cp35-abi3-macosx_11_0_arm64.whl
Size 2.0 MB
Tags CPython 3.5 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d880a9365d8ea7179d8049f5e35d3b96a85683d16dc4f773fcee1fbc22e6e6c5
BLAKE2b-256 checksum
How to use checksums
001a22d3200d29d11215f8a9ec1a9f5a3255ca759320649631925af085492ef3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 6, 2026.

Transparency log

Release files / soar_sml-9.6.5-cp35-abi3-macosx_10_9_x86_64.whl

Download URL soar_sml-9.6.5-cp35-abi3-macosx_10_9_x86_64.whl
Size 2.1 MB
Tags CPython 3.5 abi3 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
f8a2fd5426273c40c340db5bb5adf73441d36b1af866f03466bfa1aef07773d2
BLAKE2b-256 checksum
How to use checksums
2f5f0983ecc2a10f84d6406bfb3ce61f3e70aee534b1ef62a28de93718e95f9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 6, 2026.

Transparency log

Security for soar-sml 9.6.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 5 files in this release have been uploaded with provenance metadata.

Select from 5 files

Attestation for soar_sml-9.6.5-cp35-abi3-win_amd64.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

9.6.5 This release

5 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page