Tom De Muer tom@cocamware.com
Bram de Greve bram@cocamware.com
Lass is an open source C++ library written by Tom De Muer and Bram de Greve to
help the authors writing better code. It includes an interfacing library to
Python, templated geometric primitives and spatial subdivision schemes, several
design patterns and other utilities the authors use in their day-to-day
codings.
Lass is dual licensed under CPAL-1.0 and GPL-2.0-or-later, see
COPYING file.
Lass uses the CMake build system.
Lass_PYTHON_VERSION (STRING): If you want a specific version of<major>.<minor> and exact<major>.<minor>.<patch> versions.Python_EXECUTABLE (FILEPATH): If CMake cannot find the PythonBUILD_SIMD_ALIGNED (BOOL): Align some data structures on 16-byteOFF by default.BUILD_USING_PRECOMPILED_HEADERS (BOOL): Requires Microsoft VisualON by default, if this is the case.BUILD_WITHOUT_ITERATOR_DEBUGGING: (BOOL): Requires Microsoft Visual/D_HAS_ITERATOR_DEBUGGING=0 as compilerOFF by default.Lass_WITH_STUBGEN (BOOL): Generate Python *.pyi stubs and addlass_stubgen and LassStubgen.cmake to the installation.ON if Python version >= 3.10 and libclang(.dll|.so) can be found.Lass_LIBCLANG_LIBRARY(FILEPATH): Override the full path to theLass_LIBCLANG_SYSTEM_INCLUDE_DIR(PATH): Override the Clang system"${Lass_LIBCLANG_LIBRARY}/../lib/clang/<version>/include".BUILD_SHARED_LIBS (BOOL): Build Lass as shared libraries insteadON by default.BUILD_TESTING (BOOL): ON by default.Lass is build and tested on following combinations of platforms and tools.
Where possible, we rely on stock versions of the tools as provided by the
platform's package manager. Windows being the exception.
| OS | Arch | CMake | Python | Compiler |
|---|---|---|---|---|
| Debian Bullseye | x64, armv7l[1], aarch64[2] | 3.18.4 | 3.9.2 | gcc 10.2.1, clang 11.0.1 |
| Debian Bookworm | x64 | 3.25.1 | 3.11.2 | gcc 12.2.0, clang 14.0.6 |
| Debian Trixie | x64 | 3.31.6 | 3.13.5 | gcc 14.2.0, clang 19.1.7 |
| Ubuntu Yammy | x64 | 3.22.1 | 3.10.4 | gcc 11.2.0, clang 14.0.0 |
| Ubuntu Noble | x64 | 3.28.3 | 3.12.3 | gcc 13.2.0, clang 18.1.3 |
| Ubuntu Plucky | x64 | 3.31.6 | 3.13.3 | gcc 14.2.0, clang 20.1.2 |
| Windows 10 | x86, x64 | 3.31.7 | 3.9.13, 3.10.11, 3.11.9, 3.12.10, 3.13.5, 3.14.0 | vs 2019 (v16.11.49), vs 2022 (v17.14.11) |
[1] armv7l support tested on Raspberry Pi 4 (ARM Cortex-A72, 32-bit Raspbian Bullseye,
CXXFLAGS=-mcpu=cortex-a72 -mfpu=neon-fp-armv8) and BeagleBoneBlack (ARM Cortex-A8,
Debian Bullseye, CXXFLAGS=-mcpu=cortex-a8 -mfpu=neon). On RPi4, the Clang build requires
C++17 or newer.
[2] aarch64 support tested on Raspberry Pi 4 (ARM Cortex-A72, 64-bit Raspbian Bullseye,
CXXFLAGS=-mcpu=cortex-a72). Just like x64, aarch64 will assume 48-bit pointer addresses
in TaggedPtr. volatile atomics are not supported anymore, use std::atomic.