#stack #recursion #growth #grow #points #heap #limit

stacker

A stack growth library useful when implementing deeply recursive algorithms that may accidentally blow the stack

18 releases

Uses old Rust 2015

0.1.17 Aug 27, 2024
0.1.15 Jul 23, 2022
0.1.14 May 23, 2021
0.1.13 Jan 14, 2021
0.1.1 Jul 23, 2015

#13 in Algorithms

Download history 201604/week @ 2024-08-05 178642/week @ 2024-08-12 220897/week @ 2024-08-19 199159/week @ 2024-08-26 190349/week @ 2024-09-02 195615/week @ 2024-09-09 169416/week @ 2024-09-16 197755/week @ 2024-09-23 209595/week @ 2024-09-30 208188/week @ 2024-10-07 219100/week @ 2024-10-14 214861/week @ 2024-10-21 211587/week @ 2024-10-28 195008/week @ 2024-11-04 243368/week @ 2024-11-11 231579/week @ 2024-11-18

893,594 downloads per month
Used in 891 crates (55 directly)

MIT/Apache

99KB
2K SLoC

GNU Style Assembly 1K SLoC // 0.1% comments Rust 595 SLoC // 0.1% comments Assembly 138 SLoC // 0.2% comments C 4 SLoC

stacker

Build Status

Documentation

A stack-growth library for Rust. Enables annotating fixed points in programs where the stack may want to grow larger. Spills over to the heap if the stack has hit its limit.

This library is intended on helping implement recursive algorithms.

# Cargo.toml
[dependencies]
stacker = "0.1"

Platform Support

This library currently uses psm for its cross platform capabilities, with a notable exception of Windows, which uses an implementation based on Fibers. See the README for psm for the support table.

On all unsupported platforms this library is a noop. It should compile and run, but it won't actually grow the stack and code will continue to hit the guard pages typically in place.

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~0–8MB
~65K SLoC