Menu

Tree [6c71cb] master /
 History

HTTPS access


File Date Author Commit
 cmake 2025-08-14 Bram de Greve Bram de Greve [1f77e1] fixup! Drop Python 3.8 and Ubuntu Focal support
 docs 2025-10-03 Bram de Greve Bram de Greve [5e71a0] Improve doxygen output
 lass 2025-10-16 Bram de Greve Bram de Greve [6c71cb] Disable Garbage Collection on Python heap-types
 pylass 2025-07-30 Bram de Greve Bram de Greve [3fcc0a] Distribute lass.pyi file in package
 test_package 2023-12-09 Bram de Greve Bram de Greve [cd13f2] Add Conan test_package
 test_suite 2025-10-14 Bram de Greve Bram de Greve [38aed3] Fix regression in ClassDefinition isFrozen_ checks
 tools 2025-10-05 Bram de Greve Bram de Greve [85515a] Report missing definitions when generating stubs
 .gitattributes 2023-07-31 Bram de Greve Bram de Greve [c5c788] Guard against unexpected line endings
 .gitignore 2025-10-03 Bram de Greve Bram de Greve [61a1ee] Update Doxygen config files to version 1.13
 .pre-commit-config.yaml 2025-10-08 Bram de Greve Bram de Greve [8c393d] Always update copyright date in lass_common.h
 AUTHORS 2006-01-12 Bram de Greve Bram de Greve [621351] We have a Linux port!
 CMakeLists.txt 2025-10-08 Bram de Greve Bram de Greve [0c0eea] Start 1.15.0 development
 COPYING 2018-11-12 Bram de Greve Bram de Greve [de2957] Updating README files
 CTestConfig.cmake 2008-11-05 Bram de Greve Bram de Greve [133fe5] moving CMakeLists.txt and CTestConfig.cmake to ...
 ChangeLog 2008-09-01 Bram de Greve Bram de Greve [06bfbf] polynomial_quotient.h: fixing minor typo: doubl...
 LassConfig.cmake.in 2025-04-18 Bram de Greve Bram de Greve [ea83f3] Add Lass_WITH_STUBGEN option
 LassConfig.py.in 2019-08-27 Bram de Greve Bram de Greve [8a36de] Make LASS_EXTRA_CXX_FLAGS in LassConfig.py a list.
 README.md 2025-10-08 Bram de Greve Bram de Greve [2378d8] Add link to doxygen docs to README.md
 conanfile.py 2025-08-14 Bram de Greve Bram de Greve [1f77e1] fixup! Drop Python 3.8 and Ubuntu Focal support
 pyproject.toml 2025-05-02 Bram de Greve Bram de Greve [9d5719] Use more strict settings for mypy and ruff in p...
 setup.py 2025-10-08 Bram de Greve Bram de Greve [1319e4] Release lass-1.14.0

Read Me

Lass - Library of Assembled Shared Sources

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.

License

Lass is dual licensed under CPAL-1.0 and GPL-2.0-or-later, see
COPYING file.

Documentation

Requirements

Building

Lass uses the CMake build system.

Lass specific options

  • Lass_PYTHON_VERSION (STRING): If you want a specific version of
    Python, set this variable before running CMake for the first time
    in an empty build directory. It accepts both <major>.<minor> and exact
    <major>.<minor>.<patch> versions.
  • Python_EXECUTABLE (FILEPATH): If CMake cannot find the Python
    requested, you need to help it by specifying the full path to Python
    executable. Set this variable before running CMake for the first time
    in an empty build directory.
  • BUILD_SIMD_ALIGNED (BOOL): Align some data structures on 16-byte
    boundaries for better SSE2 alignment. But this does not necessarily
    improve performance! OFF by default.
  • BUILD_USING_PRECOMPILED_HEADERS (BOOL): Requires Microsoft Visual
    C++ compiler. ON by default, if this is the case.
  • BUILD_WITHOUT_ITERATOR_DEBUGGING: (BOOL): Requires Microsoft Visual
    C++ compiler. If set, it adds /D_HAS_ITERATOR_DEBUGGING=0 as compiler
    option. It dramatically improves performance of a Debug build, but it
    is not ABI compatibily with binaries that don't use this setting. So, it is
    OFF by default.
  • Lass_WITH_STUBGEN (BOOL): Generate Python *.pyi stubs and add
    lass_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 the
    libclang library to be used to generate the Python *.pyi stubs.
  • Lass_LIBCLANG_SYSTEM_INCLUDE_DIR(PATH): Override the Clang system
    include directory to be used to generate the Python *.pyi stubs. This typically
    is "${Lass_LIBCLANG_LIBRARY}/../lib/clang/<version>/include".

Generic options

  • BUILD_SHARED_LIBS (BOOL): Build Lass as shared libraries instead
    of static libraries. ON by default.
  • BUILD_TESTING (BOOL): ON by default.

Tested platforms

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.