Skip to main content

Raw SML Bindings to the Soar Cognitive Architecture

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

soar_sml-9.6.5-cp35-abi3-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.5+Windows x86-64

soar_sml-9.6.5-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.5+manylinux: glibc 2.17+ x86-64

soar_sml-9.6.5-cp35-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (2.6 MB view details)

Uploaded CPython 3.5+manylinux: glibc 2.17+ i686

soar_sml-9.6.5-cp35-abi3-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.5+macOS 11.0+ ARM64

soar_sml-9.6.5-cp35-abi3-macosx_10_9_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.5+macOS 10.9+ x86-64

File details

Details for the file soar_sml-9.6.5-cp35-abi3-win_amd64.whl.

File metadata

  • Download URL: soar_sml-9.6.5-cp35-abi3-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.5+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for soar_sml-9.6.5-cp35-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 5825933e56bbc6a9bdc9b944deeece81f985d985552c4a17a27fbc7e651f438f
MD5 50640252fe0fc87fa6880fcf0f154ead
BLAKE2b-256 5408277fbcf17282b3158a41806be961e5d42528a6e2d179452040c4750d5ca3

See more details on using hashes here.

Provenance

The following attestation bundles were made for soar_sml-9.6.5-cp35-abi3-win_amd64.whl:

Publisher: build.yml on SoarGroup/Soar

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file soar_sml-9.6.5-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for soar_sml-9.6.5-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8445998dd6a74be8f4dc0a85714f369accb34272a797bdc954fba5de2f17f088
MD5 850ef7206edd1880c574535cf0458ed5
BLAKE2b-256 8aff8064dc14bbbc5ef99e1f6b9009abf1d1f326db049daaa8c961a781745615

See more details on using hashes here.

Provenance

The following attestation bundles were made for soar_sml-9.6.5-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on SoarGroup/Soar

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file soar_sml-9.6.5-cp35-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for soar_sml-9.6.5-cp35-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a0a1791f9b77aa329a620ab8d5f34fff3f0ccd5cad1088faa7c79e1dbc5fbce9
MD5 9867bea66e423c4914da75040f04f7f1
BLAKE2b-256 795ad20b2b9c7b6ef434bf1b43ad2dd9be2fe2bbc4a424eb0ca5688ea3f27940

See more details on using hashes here.

Provenance

The following attestation bundles were made for soar_sml-9.6.5-cp35-abi3-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build.yml on SoarGroup/Soar

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file soar_sml-9.6.5-cp35-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for soar_sml-9.6.5-cp35-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d880a9365d8ea7179d8049f5e35d3b96a85683d16dc4f773fcee1fbc22e6e6c5
MD5 66c470ca06bfdd90a86a028cb575c701
BLAKE2b-256 001a22d3200d29d11215f8a9ec1a9f5a3255ca759320649631925af085492ef3

See more details on using hashes here.

Provenance

The following attestation bundles were made for soar_sml-9.6.5-cp35-abi3-macosx_11_0_arm64.whl:

Publisher: build.yml on SoarGroup/Soar

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file soar_sml-9.6.5-cp35-abi3-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for soar_sml-9.6.5-cp35-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f8a2fd5426273c40c340db5bb5adf73441d36b1af866f03466bfa1aef07773d2
MD5 b8c933a106ed16ba739750f3ca443440
BLAKE2b-256 2f5f0983ecc2a10f84d6406bfb3ce61f3e70aee534b1ef62a28de93718e95f9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for soar_sml-9.6.5-cp35-abi3-macosx_10_9_x86_64.whl:

Publisher: build.yml on SoarGroup/Soar

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page