Skip to content

Releases: Londopy/ropesim

v3.1.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 09:34

ropesim 3.1.0 — 2026-07-13

Climbing rope physics engine — Python library, CLI, TUI, and a native 3D desktop app.

ropesim models lead-fall dynamics with a UIAA 101 / EN 892 impact-force model and
RK4 damped-spring integration in a Rust core (optional Rapier3D full-physics mode).
One engine, four frontends: a pip-installable Python library, a 20+ command CLI, a
Textual terminal UI, and a native C++ / Qt6 desktop application with a 60 fps OpenGL
rope renderer.

Added

  • Nonlinear rope model (nonlinear_rope_from_spec, nonlinear_impact_force, nonlinear_force_curve): cubic force–strain law F(ε) = a·ε + b·ε³ calibrated against both the rated impact force and the dynamic elongation (two-point EN 892 calibration). Exact in force and elongation at the test point; predicts higher (more realistic) forces than the linear model at low fall factors.
  • Capstan route friction (capstan_ratio, route_friction, route_transmission): tension propagation through every carabiner via the capstan equation T_out = T_in·e^(−μθ), per-piece resultant loads, belay-device tension, and overall drag factor. Physically derived replacement for the scalar belay_friction guess.
  • Two-body belayer dynamics (two_body_catch): coupled climber + belayer ODE over the top piece with capstan friction; the soft catch (typically 5–25 % force reduction, scaling inversely with belayer mass) emerges from the belayer being lifted rather than being asserted.
  • Validation regression suite (tests/validation/): every rope in the 25-rope database is a manufacturer drop-test data point that the models must reproduce within tolerance, plus analytic invariants (Wexler closed form, energy conservation, capstan closed form, limiting cases). Table for external literature drop tests included (empty until transcribed with page references).
  • CI: Python test job builds the Rust core fresh with maturin on Linux + Windows (Python 3.10/3.12), deletes any committed prebuilt binaries first, and runs the full suite including validation — a committed stale binary can no longer mask failures.

Fixed

  • compute_force_curve truncated the simulation when timestep_ms < ~0.25 ms (hardcoded 3000-step cap): peaks were silently under-reported (~3 % at 0.1 ms, catastrophic at 0.01 ms). The cap now scales with the timestep (3 s of simulated time).

Install

Python library / CLI / TUI (all platforms, Python 3.10–3.12):

pip install ropesim          # library + CLI
pip install "ropesim[tui]"   # + terminal UI

Desktop app (no Python required) — download an asset below and run:

  • Windows — unzip ropesim-gui-windows-x64.zip, run ropesim-gui.exe
  • macOS — open ropesim-gui-macos.dmg (unsigned: right-click → Open the first time)
  • Linuxchmod +x ropesim-gui-linux-x86_64.AppImage && ./ropesim-gui-linux-x86_64.AppImage

Verify your download (SHA-256)

sha256sum -c SHA256SUMS.txt        # Linux
shasum -a 256 -c SHA256SUMS.txt    # macOS

Desktop apps

  • ropesim-gui-linux-x86_64.AppImage
    7b3946d40e2c29d8e9879d76ef808efc476b8f93702e53a1c9d67f90480dde19
  • ropesim-gui-macos.dmg
    ec476cfdd199ea876af47edbcef657be19c20f8e40af86a102781592f19e846a
  • ropesim-gui-windows-x64.zip
    b1f535317b10be7238626ec445eaa10107cce2a78a5ca4a28d86d2a528fc798c

Python wheels

  • ropesim-3.1.0-cp310-cp310-macosx_11_0_arm64.whl
    a78c79a0c57a305f4a0ef1dea5384a6476d784076c3aba065ee9a3cf483bc2c0
  • ropesim-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    041ec724b55e5628987ca8b841dc662563ce6faf0e3b279f7e589e1feca19509
  • ropesim-3.1.0-cp310-cp310-win_amd64.whl
    5807c25d2fff9d5df57f509c1a52bbcdda1a83ea277ca934158add053f509f34
  • ropesim-3.1.0-cp311-cp311-macosx_11_0_arm64.whl
    d05e41198782429bbea805f5cfb95441a951b329856e2811043580b6ff4d41fc
  • ropesim-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    eccbe5fd452503fe065d9f0896ce9ba34d59bed3f26370a16dc23b1c4e4bc994
  • ropesim-3.1.0-cp311-cp311-win_amd64.whl
    302047f1681480f7d136390185bcfe777c8b611522d8ded74fc617e54b789c08
  • ropesim-3.1.0-cp312-cp312-macosx_11_0_arm64.whl
    9c4fec4592af9066dc407e8c2a85a7033fa8aff84bcbb66948e8f39e108fea08
  • ropesim-3.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    49e88a7480bfd14a2cb64ee6e63809e6a6a29792a3c37bed509041610f13b2d9
  • ropesim-3.1.0-cp312-cp312-win_amd64.whl
    2597a366dcd724acb10f10501cd82a7a42f20ee8ee8f7971087ea899e3c9fc62

⚠️ ropesim informs judgement — it is for education and planning, never a substitute for testing, redundancy, and experience at the crag.

v3.0.4

Choose a tag to compare

@github-actions github-actions released this 09 Jul 04:04

ropesim 3.0.4 — 2026-07-08

Climbing rope physics engine — Python library, CLI, TUI, and a native 3D desktop app.

ropesim models lead-fall dynamics with a UIAA 101 / EN 892 impact-force model and
RK4 damped-spring integration in a Rust core (optional Rapier3D full-physics mode).
One engine, four frontends: a pip-installable Python library, a 20+ command CLI, a
Textual terminal UI, and a native C++ / Qt6 desktop application with a 60 fps OpenGL
rope renderer.

Added

  • Example script examples/demo_2d.py: runs a full analytical fall and plots six figures (force curve, belay-device comparison, energy budget, rope elongation, route position sweep, and route schematic)
  • Example script examples/demo_3d.py: runs a Rapier 3-D fall and plots the rope in 3-D at peak load, the climber's fall path, and the anchor force curve
  • Desktop GUI Demo menu — 2D Fall Analysis Demo (F9) and 3D Rapier Fall Demo (F10) preset a complete lead-fall scenario, switch to the matching view, and run the simulation with no setup required

Install

Python library / CLI / TUI (all platforms, Python 3.10–3.12):

pip install ropesim          # library + CLI
pip install "ropesim[tui]"   # + terminal UI

Desktop app (no Python required) — download an asset below and run:

  • Windows — unzip ropesim-gui-windows-x64.zip, run ropesim-gui.exe
  • macOS — open ropesim-gui-macos.dmg (unsigned: right-click → Open the first time)
  • Linuxchmod +x ropesim-gui-linux-x86_64.AppImage && ./ropesim-gui-linux-x86_64.AppImage

Verify your download (SHA-256)

sha256sum -c SHA256SUMS.txt        # Linux
shasum -a 256 -c SHA256SUMS.txt    # macOS

Desktop apps

  • ropesim-gui-linux-x86_64.AppImage
    38b190652b2297a110cf33636f5bee0cd6d64d02ff46e660eff26314a10c7dad
  • ropesim-gui-macos.dmg
    6ad0b19262600efb8bf983323b86369e4eb274bd14b43aa8dbcfd7355048bbc1
  • ropesim-gui-windows-x64.zip
    904defbcf6ec0e766ca4c1acaa4324e05aaa481dfe98373f77e6f246a3462a61

Python wheels

  • ropesim-3.0.4-cp310-cp310-macosx_11_0_arm64.whl
    03f50299207e1d515aa16c0c64db7f31772e2203031f9763966bac7f74cc25fc
  • ropesim-3.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    244bf66c6c07c121df599cdaa1300e1f11b53e97c4aa28a6a7f83d9c77556c22
  • ropesim-3.0.4-cp310-cp310-win_amd64.whl
    c377e9148d8e32324bcb1c867ed357b754a7e3c8aff08e29f23c8ac40494db5a
  • ropesim-3.0.4-cp311-cp311-macosx_11_0_arm64.whl
    1fb1b1abf3982fe3e8f8bbeafa8547d91cb504c9b3b81dd860127cb5bd399e80
  • ropesim-3.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    d859b4b5c52d4f25b9f067be19dd148e5164c212e6809e846643e10d0f6ecc0e
  • ropesim-3.0.4-cp311-cp311-win_amd64.whl
    e3ab172d3555386b37a3c56a19ebc1862884c1f0056f53cc4c0c6e564de911a0
  • ropesim-3.0.4-cp312-cp312-macosx_11_0_arm64.whl
    62fff5c3e7e472f57f15dd958aa6589d5dadd408640b396b666e8f39e1b40d23
  • ropesim-3.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    d7762dd922d69a14e6e15e8609073cd03288a82dfbef9a05abea0bc1b9d87a79
  • ropesim-3.0.4-cp312-cp312-win_amd64.whl
    39dbba0b3030bd99d335ef895d278705d8106e7979d7a34cb0624a8754289767

⚠️ ropesim informs judgement — it is for education and planning, never a substitute for testing, redundancy, and experience at the crag.

v3.0.3

Choose a tag to compare

@github-actions github-actions released this 09 Jul 03:01

ropesim 3.0.3 — 2026-07-08

Climbing rope physics engine — Python library, CLI, TUI, and a native 3D desktop app.

ropesim models lead-fall dynamics with a UIAA 101 / EN 892 impact-force model and
RK4 damped-spring integration in a Rust core (optional Rapier3D full-physics mode).
One engine, four frontends: a pip-installable Python library, a 20+ command CLI, a
Textual terminal UI, and a native C++ / Qt6 desktop application with a 60 fps OpenGL
rope renderer.

Fixed

  • Windows desktop app failed to launch with "_rustcore.dll was not found" —

Removed

  • References to the (unpublished) documentation site

Install

Python library / CLI / TUI (all platforms, Python 3.10–3.12):

pip install ropesim          # library + CLI
pip install "ropesim[tui]"   # + terminal UI

Desktop app (no Python required) — download an asset below and run:

  • Windows — unzip ropesim-gui-windows-x64.zip, run ropesim-gui.exe
  • macOS — open ropesim-gui-macos.dmg (unsigned: right-click → Open the first time)
  • Linuxchmod +x ropesim-gui-linux-x86_64.AppImage && ./ropesim-gui-linux-x86_64.AppImage

Verify your download (SHA-256)

sha256sum -c SHA256SUMS.txt        # Linux
shasum -a 256 -c SHA256SUMS.txt    # macOS

Desktop apps

  • ropesim-gui-linux-x86_64.AppImage
    3ad8617d8cdd0d404a11bcdf1e3655a9bc389662e4b628e61e915424e428bf22
  • ropesim-gui-macos.dmg
    4eda7c11c04f69406b8ed772b3b9145b3b240d706673e4d1efccbbc23cf85632
  • ropesim-gui-windows-x64.zip
    208d5d5c16a98bbe8227bf5e88e8ba71e6b61e177336e7f82bf25c8020c29212

Python wheels

  • ropesim-3.0.3-cp310-cp310-macosx_11_0_arm64.whl
    6fa7290336964857273b26d833cc8c906b856cb1ace20b23a0d220e109e31a8a
  • ropesim-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    ca499b89b3627521c90d593a7d257fb9192f33c35db2aeac3ada058859040848
  • ropesim-3.0.3-cp310-cp310-win_amd64.whl
    542bda40b84c87e9fcc5f9c8471fdb506bf0b4878df4b5f94da1e8ec616b4e63
  • ropesim-3.0.3-cp311-cp311-macosx_11_0_arm64.whl
    f827238a354f8c430c44c783d8781b807ccf1c7082118feb21366c809624c527
  • ropesim-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    66740f4574f7ec22e378805458a40cc9e36456fd3aecd3b536263ed2e8d2ed63
  • ropesim-3.0.3-cp311-cp311-win_amd64.whl
    6dec93caf5cfef8f5c236ac696ecf854d6a08fad095644016c0dd028fba29d02
  • ropesim-3.0.3-cp312-cp312-macosx_11_0_arm64.whl
    0b96eb1e41fb0f55a66aa0467f409386efcd6999635ca1655b49068f2c7b74fc
  • ropesim-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    a338c71dac50dad0872a4f069a1610272fa12058f9b74364def704768c4fd58f
  • ropesim-3.0.3-cp312-cp312-win_amd64.whl
    31c4bfca882ecd512ee96f40ae2bb0496329dc3cbb79ed7385c9e4f8cc7110cb

⚠️ ropesim informs judgement — it is for education and planning, never a substitute for testing, redundancy, and experience at the crag.

v3.0.2

Choose a tag to compare

@github-actions github-actions released this 09 Jul 02:37

ropesim 3.0.2 — 2026-07-08

Climbing rope physics engine — Python library, CLI, TUI, and a native 3D desktop app.

ropesim models lead-fall dynamics with a UIAA 101 / EN 892 impact-force model and
RK4 damped-spring integration in a Rust core (optional Rapier3D full-physics mode).
One engine, four frontends: a pip-installable Python library, a 20+ command CLI, a
Textual terminal UI, and a native C++ / Qt6 desktop application with a 60 fps OpenGL
rope renderer.

Changed

  • CI no longer re-runs the full test matrix on version tags — a v* tag push

Install

Python library / CLI / TUI (all platforms, Python 3.10–3.12):

pip install ropesim          # library + CLI
pip install "ropesim[tui]"   # + terminal UI

Desktop app (no Python required) — download an asset below and run:

  • Windows — unzip ropesim-gui-windows-x64.zip, run ropesim-gui.exe
  • macOS — open ropesim-gui-macos.dmg (unsigned: right-click → Open the first time)
  • Linuxchmod +x ropesim-gui-linux-x86_64.AppImage && ./ropesim-gui-linux-x86_64.AppImage

Docs: https://londopy.github.io/ropesim/


Verify your download (SHA-256)

sha256sum -c SHA256SUMS.txt        # Linux
shasum -a 256 -c SHA256SUMS.txt    # macOS

Desktop apps

  • ropesim-gui-linux-x86_64.AppImage
    0034b267ab2c12b8f4b770e13c0b01244c092f3a0e1e8bc968eea54573d4c14c
  • ropesim-gui-macos.dmg
    1d6579b4d4de0e1dd4f97dd00123b461e8adb25bcfbd2823ee80de38d53e7259
  • ropesim-gui-windows-x64.zip
    bbdb3beecc0d69bf426499ff1b1abb3687c308a194364da3142b750d7784f594

Python wheels

  • ropesim-3.0.2-cp310-cp310-macosx_11_0_arm64.whl
    f449f0b4c581c02a3d6bfa9dcc3c3b426ff706f032a1078e45acec98121a9150
  • ropesim-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    892e20f18e8801f5e613c5788ec597b49454e4836c5bf44d973236fe5320a951
  • ropesim-3.0.2-cp310-cp310-win_amd64.whl
    c35e482df3eae0c5fca4cc190ada6d1615d4d600a91941b0014d5175a8c5d012
  • ropesim-3.0.2-cp311-cp311-macosx_11_0_arm64.whl
    01fc5ca46a9f6cbd35e5734502e8273a79da5733bbeedb533c1b7e39619be6e9
  • ropesim-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    c6a3329d96ae2f8bcb7e64a716c7a695bd40f6e00645584f5683bdb0ae1a8e7f
  • ropesim-3.0.2-cp311-cp311-win_amd64.whl
    c9a77cb5d6df85ea737aa517cc83987a51878d820fc75d31b88d14ab608cf8c7
  • ropesim-3.0.2-cp312-cp312-macosx_11_0_arm64.whl
    c438b1830b1fd5323607978e4189f46c57f264ff8ac8b22d76635f089280a812
  • ropesim-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    2c2e90054d7d9cd63c6ad784a2a80cfd9d0ab6b08579e5c65819daa58b7654ef
  • ropesim-3.0.2-cp312-cp312-win_amd64.whl
    bca1c44c9e8da220da86b769d44f37a2120b729c6b9a003944539e459003b6ca

⚠️ ropesim informs judgement — it is for education and planning, never a substitute for testing, redundancy, and experience at the crag.

v3.0.0

Choose a tag to compare

@github-actions github-actions released this 09 Jul 01:39

Full Changelog: v0.2.2...v3.0.0

v2.0.1

Choose a tag to compare

@Londopy Londopy released this 27 Apr 00:00
dd690d8
Delete pytest-cache-files-g8do709j/v/cache directory

Latest Release

Choose a tag to compare

@Londopy Londopy released this 25 Apr 03:57
v2.0.0

test: add v2.0.0 test suite - guide-mode, Rapier, replay, notebook, C…

v0.2.0

Choose a tag to compare

@Londopy Londopy released this 25 Apr 02:56
v0.2.0 - demo mode, GUI fixes, __main__.py