MCPcopy Index your code
hub / github.com/LiveSplit/livesplit-core

github.com/LiveSplit/livesplit-core @v0.13.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.13.0 ↗ · + Follow
2,710 symbols 8,097 edges 343 files 663 documented · 24%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

LiveSplit livesplit-core

Build Status crates.io npm docs.rs dependency status

livesplit-core is a library that provides a lot of functionality for creating a speedrun timer. It can be used directly from Rust. Additional bindings are available for the following programming languages:

  • C
  • C++
  • C#
  • Java with Java Native Access or Java Native Interface
  • Kotlin with Java Native Interface
  • Swift
  • Ruby
  • Python
  • JavaScript + TypeScript for Node.js and WebAssembly

The documentation is available here:

Projects using livesplit-core

Build Instructions

You can install Rust with the installer available on rustup.rs. Clone the repository and build the library with the following command:

cargo build --release -p livesplit-core-capi

The library will then be available as a shared and static library in the target folder. If you only want to build the library as a shared or static library, not both, you can run either one of the following commands:

# Shared Library
cargo rustc --release -p livesplit-core-capi --crate-type cdylib
# Static Library
cargo rustc --release -p capi --crate-type staticlib

If you want to build the bindings for the library too, you need to go into the capi/bind_gen folder and run the following command:

cargo run

The bindings will then be available in capi/bindings.

Download

Builds for a lot of common platforms are available in the Releases.

License

Licensed under either of

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be dual licensed as above, without any additional terms or conditions.

Extension points exported contracts — how you extend this code

ComparisonGenerator (Interface)
A Comparison Generator automatically generates a comparison based on what kind of generator it is. Comparison Generators [8 …
src/comparison/mod.rs
TimeFormatter (Interface)
Time Formatters can be used to format optional Time Spans in various ways. [8 implementers]
src/timing/formatter/mod.rs
Clear (Interface)
Allows clearing an object while retaining its capacity. This usually brings the object back into the same state that the [6 …
src/util/clear_vec.rs
SharedOwnership (Interface)
Describes that ownership of a value can be cheaply shared. This is similar to the [`Clone`] trait, but is expected to on [7 …
src/rendering/resource/shared_ownership.rs
TotalPlaytime (Interface)
Allows calculating the total playtime. [3 implementers]
src/analysis/total_playtime.rs
GradientType (Interface)
(no doc) [3 implementers]
src/layout/parser/mod.rs
Timer (Interface)
A timer that can be controlled by an auto splitter. [1 implementers]
crates/livesplit-auto-splitting/src/timer.rs
Clock (Interface)
A clock is a global handler that can be registered for providing the high precision time stamps on a `no_std` target.
src/platform/no_std/time.rs

Core symbols most depended-on inside this repo

new
called by 738
crates/livesplit-hotkey/src/linux/x11_impl.rs
push
called by 153
src/layout/mod.rs
len
called by 136
src/run/mod.rs
iter
called by 136
crates/livesplit-auto-splitting/src/settings.rs
write_str
called by 127
src/util/xml/writer.rs
snapshot
called by 92
src/timing/timer/mod.rs
is_empty
called by 69
src/run/mod.rs
push_segment
called by 66
src/run/mod.rs

Shape

Function 1,183
Method 1,113
Class 266
Enum 109
Interface 39

Languages

Rust99%
TypeScript1%

Modules by API surface

src/run/editor/mod.rs67 symbols
src/run/mod.rs66 symbols
src/timing/timer/mod.rs55 symbols
src/run/parser/flitter/s_expressions.rs44 symbols
capi/src/run_editor.rs44 symbols
src/run/editor/tests/mark_as_modified.rs41 symbols
capi/src/timer.rs39 symbols
tests/split_parsing.rs38 symbols
src/rendering/mod.rs38 symbols
src/rendering/software.rs32 symbols
src/component/splits/tests/column.rs32 symbols
src/component/graph.rs28 symbols

For agents

$ claude mcp add livesplit-core \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact