| Branch | Commit message | Author | Age |
| main | Bump to 1.5.1 |  Michał Górny | 10 days |
| |
| Tag | Download | Author | Age |
| v1.5.1 | steve-1.5.1.tar.gz steve-1.5.1.tar.bz2 steve-1.5.1.zip |  Michał Górny | 10 days |
| v1.5.0 | steve-1.5.0.tar.gz steve-1.5.0.tar.bz2 steve-1.5.0.zip |  Michał Górny | 5 months |
| v1.4.0 | steve-1.4.0.tar.gz steve-1.4.0.tar.bz2 steve-1.4.0.zip |  Michał Górny | 6 months |
| v1.3.1 | steve-1.3.1.tar.gz steve-1.3.1.tar.bz2 steve-1.3.1.zip |  Michał Górny | 6 months |
| v1.3.0 | steve-1.3.0.tar.gz steve-1.3.0.tar.bz2 steve-1.3.0.zip |  Michał Górny | 6 months |
| v1.2.0 | steve-1.2.0.tar.gz steve-1.2.0.tar.bz2 steve-1.2.0.zip |  Michał Górny | 7 months |
| v1.1.0 | steve-1.1.0.tar.gz steve-1.1.0.tar.bz2 steve-1.1.0.zip |  Michał Górny | 7 months |
| v1.0.2 | steve-1.0.2.tar.gz steve-1.0.2.tar.bz2 steve-1.0.2.zip |  Michał Górny | 7 months |
| v1.0.1 | steve-1.0.1.tar.gz steve-1.0.1.tar.bz2 steve-1.0.1.zip |  Michał Górny | 7 months |
| v1.0.0 | steve-1.0.0.tar.gz steve-1.0.0.tar.bz2 steve-1.0.0.zip |  Michał Górny | 7 months |
| |
| Age | Commit message | Author | Files | Lines |
| 10 days | Bump to 1.5.1•••Signed-off-by: Michał Górny <mgorny@gentoo.org>
HEADv1.5.1main |  Michał Górny | 1 | -1/+1 |
| 2026-05-23 | Fix memory leak of pollhandle in steve_poll()•••The steve_poll() function would leak memory in form of the pollhandle
in case a token is immediately available. Because then the pollhandle
is not placed in the waiters queue, where it is eventually deallocated
via the ~steve_waiter destructor.
Fix this my explicitly destroying the pollhandle if we do not put it
in the waiters queue.
Signed-off-by: Florian Schmaus <flow@gentoo.org>
Part-of: https://codeberg.org/gentoo/steve/pulls/2
Merges: https://codeberg.org/gentoo/steve/pulls/2
Signed-off-by: Michał Górny <mgorny@gentoo.org>
|  Florian Schmaus | 1 | -1/+6 |
| 2026-05-23 | Fix token leak if client performs non-blocking poll•••If a client performs a non-blocking poll while no tokens were
available, FUSE/CUSE passes a nullptr as the pollhandle argument
to steve_poll(). Steve would previously push this nullptr into the
waiters queue.
Later, when a token became available, the server would wake this
"ghost" waiter, permanently reserving a token for a client that was
not actually waiting for it. This effectively leaks the token until
the client process exited.
Fix this by only queuing a waiter request if the pollhandle is
non-null (representing an actual sleeping client).
Signed-off-by: Florian Schmaus <flow@gentoo.org>
Part-of: https://codeberg.org/gentoo/steve/pulls/5
Merges: https://codeberg.org/gentoo/steve/pulls/5
Signed-off-by: Michał Górny <mgorny@gentoo.org>
|  Florian Schmaus | 1 | -1/+2 |
| 2026-05-22 | Do not pass an invalid buffer to FUSE in steve_handle_cuse()•••When steve is stopped and the CUSE connection closes,
fuse_session_recieve_buf() returns 0. In thise case
steve_handle_cuse() shuts down the event loop but did not return,
causing an invalid buffer being passed to fuse_session_process_buf().
This causes FUSE to abort, bypassing a clean unmount, which manifests
as a memory leak.
Fix this by only invoking fuse_session_process_buf() if rd > 0.
This also changes the code so that the error handling is only
performed if rd != -EINTR && rd != -EAGAIN, as those a transient
errors that should be simply ignored.
Signed-off-by: Florian Schmaus <flow@gentoo.org>
Part-of: https://codeberg.org/gentoo/steve/pulls/3
Merges: https://codeberg.org/gentoo/steve/pulls/3
Signed-off-by: Michał Górny <mgorny@gentoo.org>
|  Florian Schmaus | 1 | -2/+3 |
| 2026-05-22 | Run steve service under SCHED_FIFO•••As a system-wide jobserver, steve orchestrates token distribution for
parallel builds. Under heavy load, the spawned jobs, e.g., compiler
and linker processes quickly saturate all available CPU time.
When the system is fully saturated, steve suffers from scheduling
starvation, which affects the overall system efficiency. If a client
releases a token or requests one, steve may not be scheduled
immediately, leading to a form of priority inversion where
compute-bound tasks delay the critical path of I/O-bound token
dispatch. This causes workers to idle unnecessarily, extending
overall build times.
Since steve's workload is strictly I/O-bound, i.e., reading and
writing small pipe messages, and its CPU footprint is minuscule, it is
an ideal candidate for higher-priority fifo (real-time)
scheduling. Moving it to SCHED_FIFO ensures that token dispatch
preempts standard compilation tasks instantly, maintaining high system
utilization.
The SCHED_FIFO priority is kept at a moderate real-time level of 10 to
easily outrank standard user-space workloads without interfering with
critical kernel threads like IRQ handlers.
Signed-off-by: Florian Schmaus <flow@gentoo.org>
Part-of: https://codeberg.org/gentoo/steve/pulls/4
Merges: https://codeberg.org/gentoo/steve/pulls/4
Signed-off-by: Michał Górny <mgorny@gentoo.org>
|  Florian Schmaus | 1 | -0/+2 |
| 2026-01-30 | Bump to 1.5.0•••Signed-off-by: Michał Górny <mgorny@gentoo.org>
v1.5.0 |  Michał Górny | 1 | -1/+1 |
| 2026-01-30 | stevie: Provide -j value in MAKEFLAGS•••Provide the job count as -j in MAKEFLAGS, to accommodate clients using
that as an upper job bound (e.g. LLVM).
Signed-off-by: Michał Górny <mgorny@gentoo.org>
|  Michał Górny | 1 | -0/+13 |
| 2026-01-10 | Include waiters in SIGUSR1 report•••Signed-off-by: Michał Górny <mgorny@gentoo.org>
|  Michał Górny | 1 | -2/+15 |
| 2025-12-30 | Bump to 1.4.0•••Signed-off-by: Michał Górny <mgorny@gentoo.org>
v1.4.0 |  Michał Górny | 1 | -1/+1 |
| 2025-12-30 | Add sanity checks for --min-memory-avail•••Signed-off-by: Michał Górny <mgorny@gentoo.org>
|  Michał Górny | 1 | -2/+26 |
| [...] |
| |
| Clone |
| https://anongit.gentoo.org/git/proj/steve.git |
| git+ssh://git@git.gentoo.org/proj/steve.git |