v0.1.0 (2026-03-07)
Bug Fixes
-
fix support for job prioritization by @spencerjibz (8e514e2)
-
fix job retrial after failure by @spencerjibz (#11)
-
fix retrials & remove crossbeam-skiplist by @spencerjibz (800fb39)
-
failing missed deadline jobs by @spencerjibz (8595655)
-
fix serializing redis-stream-event by @spencerjibz (71c0ccd)
-
skipmap.len is just an len appromixation, use atomic counter for this instead by @spencerjibz (#14)
-
fix flaky test by @spencerjibz (#15)
-
correctly serialize queue-events by @spencerjibz (f09e065)
-
promoting delayed jobs by @spencerjibz (0d36fa8)
-
fix complete rocksdb-store::add_bulk methods by @spencerjibz (01b2f3d)
-
counter bugs in in-memory and rocksdb store by @spencerjibz (85c20ed)
-
fix overflow and simple clean up by @spencerjibz (234f7f5)
-
fix out of range errors by @spencerjibz (#17)
-
fix typo by @spencerjibz (b0852f4)
-
bug fix by @spencerjibz (5f08980)
-
correct naming of metrics by @spencerjibz (9b1e9c7)
-
bug fixes by @spencerjibz (2fd910f)
-
set return value & add timeout to listening to events by @spencerjibz (e71a2d3)
-
timedmap tests by @spencerjibz (152e2f5)
-
bug fix: locks.len_exnpire is async by @spencerjibz (c71823e)
-
inmemory-store, only update stored-metrics from publish_event by @spencerjibz (6ff80a4)
-
updating prioritized and failed job counts in queue-metrics by @spencerjibz (cdd2726)
-
pass the right attempt for failed jobs by @spencerjibz (e672423)
-
redis-store returns pause_count instead of failed_job cout by @spencerjibz (0f027d5)
-
typo in fetch_worker_metrics in redis-store by @spencerjibz (9d17207)
-
cargo fmt by @spencerjibz (3ab26ed)
-
fetching_metrics from redis-store by @spencerjibz (0173d57)
-
fix flawky tests by @spencerjibz (9e84dee)
-
fix tests by @spencerjibz (#49)
-
tracing::Instrument::instrument is ambigious to TaskMonitor.instrument by @spencerjibz (6e6f342) (method-ambiguity)
-
stop relying on timestamps to generate release.md by @spencerjibz (3b57340) (ci)
CI
-
add ci tests by @spencerjibz (04c4110)
-
Merge pull request #2 from spencerjibz/add-ci by @spencerjibz (#2)
-
re-export both backtrace tracing macros by @spencerjibz (3d797ca)
-
pass down removal options from queue if not specified for a job by @spencerjibz (be9473f)
-
efficiently pausing workers with global activity count, let workers finished all their work before pausing by @spencerjibz (#12)
-
batch pipeline commands by @spencerjibz (fac9673)
-
format spacing in readme by @spencerjibz (79cc9ac)
-
fix and improve ci with caching & using nextest by @spencerjibz (c696b5c)
-
don't use release flag in ci by @spencerjibz (740cdda)
-
use keydb and improved workflow by @spencerjibz (62e06c4)
-
use redis instead of keydb in ci by @spencerjibz (4bfbd33)
-
fix ci by @spencerjibz (d671d70)
-
add the tracing crate by @spencerjibz (26b15a0)
-
add tracing and tracing-subscriber to examples by @spencerjibz (67196ab)
-
clean and add tracing to examples by @spencerjibz (aec1a40)
-
gate tracing under a feature flag and make dep optional by @spencerjibz (#34)
-
Apply code review feedback: remove explicit type in loop, drop unused return value assignment by @Copilot (223ecab)
-
Migrate workflows to Blacksmith by @blacksmith-sh[bot] (18f8dc2)
-
run store tests in concurreny in ci by @spencerjibz (1386a80)
-
add a release-workflow by @spencerjibz (aab3e02)
-
populated CD workflow file by @spencerjibz (#51)
-
add create generation to workflow by @spencerjibz (7b85613) (cd-workflow)
-
Fix remaining clippy errors and incorporate release-pipeline lint relaxation by @Copilot (652c1b6)
-
fix cd pipeline by @spencerjibz (9da2cb8)
-
add rocks build time system dependencies for publishing job by @spencerjibz (73c036f) (cd-pipeline)
-
chose better category slugs for publishing crate by @spencerjibz (a7a8478) (cd)
Chores
-
cargo fmt by @spencerjibz (a7eb821)
-
add changelong with git-cliff by @spencerjibz (165824e)
-
add author, description, links and licence metadata by @spencerjibz (09dfba9) (cargo.toml)
-
add best practice library clint protections by @spencerjibz (f28968c)
-
unused/dead_code elimination by @spencerjibz (dac2919)
-
add missing debug implementations by @spencerjibz (6015372)
-
only expose few methods publicity & tracing vital calls by @spencerjibz (2b79b7c) (queue)
-
add more tracing spans by @spencerjibz (fa75a53) (tracing)
-
manual clippy --fix by @spencerjibz (31456a6) (clippy)
-
more docs in worker_opts by @spencerjibz (d561826)
-
relax some lint constricts by @spencerjibz (0967db7)
-
fix lint warnings in tests by @spencerjibz (24dd862)
-
add clippy:nursery recommendation & fmt by @spencerjibz (#52) (clippy)
-
use the right branch for releases by @spencerjibz (f4f4c63) (cd)
-
use real sermver version of crates by @spencerjibz (a6e8f58) (cargo)
-
use real sermver version of crates by @spencerjibz (5c96437) (cargo)
Documentation
-
add readme by @spencerjibz (7458a6a)
-
update readme by @spencerjibz (4ea9557)
-
Update README.md by @spencerjibz (69c92b5)
-
Update README.md by @spencerjibz (2c1749a)
-
update readme to reflect current developement progress by @spencerjibz (d19d9cc)
-
Update README.md for clarity and formatting by @spencerjibz (9753782)
-
update Readme by @spencerjibz (f583669)
-
add extras to readme by @spencerjibz (#45)
-
Add logo and project overview to README by @spencerjibz (6e40043)
-
Add comprehensive Rustdoc documentation across the kiomq codebase by @Copilot (a62c4b7)
-
Add Rustdoc for RedisStore struct, fields, and public methods; doc fetch_redis_pass and get_queue_metrics by @Copilot (b9c4640)
-
Fix updating_metrics bug in README examples and add panics/framed section by @Copilot (decbf13)
-
add doc comment and example to the framed re-export in lib.rs by @Copilot (7c1eb18)
-
condense README to match lib.rs conciseness (44% shorter) by @Copilot (4fbc363)
-
restore Progress updates section and improve Panics & errors wording by @Copilot (71c7dc7)
-
add compact table of contents to README by @Copilot (#50)
-
Fix clippy warnings: visibility, casts, docs, match arms, async, and more by @Copilot (db811ff)
-
typo by @spencerjibz (d221802)
Features
-
add basic required deps by @spencerjibz (3405f0a)
-
add simple queue impl with a job queue too by @spencerjibz (7ee4ec8)
-
add job progress updating by @spencerjibz (f64948e)
-
add base worker by @spencerjibz (db9b270)
-
add timer implementation by @spencerjibz (34188fa)
-
add worker options by @spencerjibz (7519a91)
-
add backtrace_capture utils by @spencerjibz (8626a5a)
-
add more utils to wokrer by @spencerjibz (694ecf3)
-
add timer queue functions by @spencerjibz (cbed76e)
-
add timers to worker by @spencerjibz (9121195)
-
add support for storing stacktraces and errors separately by @spencerjibz (6677dd6)
-
add events to queue & worker by @spencerjibz (#4)
-
support queue-obliteration by @spencerjibz (c158955)
-
add backoff utils by @spencerjibz (dabd8f1)
-
add joinError to KioError type by @spencerjibz (e09d35b)
-
add working video_transcoding-example by @spencerjibz (9dd62c4)
-
add job options with delay by @spencerjibz (d90d537)
-
add priority to job_data and priority helpers by @spencerjibz (922e358)
-
enable scheduling without a seperate timer by @spencerjibz (8aa3e2c)
-
add the right job status for delayed jobs by @spencerjibz (#9)
-
add delay field to event_stream by @spencerjibz (b73346e)
-
add and move events into their own module by @spencerjibz (75d93f1)
-
add stream-listener-task by @spencerjibz (1474263)
-
add queue-stream-event by @spencerjibz (6ab4b9a)
-
add job-removal options by @spencerjibz (b2d6bb2)
-
add tokio-console by @spencerjibz (65e8fb1)
-
add queue options to example by @spencerjibz (839faac)
-
add support for bulk_add by @spencerjibz (4840b76)
-
add task-notifiers & waiting-job-count to metrics by @spencerjibz (edcf098)
-
add methods to bulk add jobs with returning them by @spencerjibz (a1b9d67)
-
add proesssing to JobState and clean up events by @spencerjibz (855f64c)
-
add repeat opts with cron support and test them in example by @spencerjibz (2504142)
-
add support for cron as inital delay by @spencerjibz (c20932c)
-
add obliterate as an event, rm prioritized collection on obliteration by @spencerjibz (7e20e2b)
-
add sample queue tests by @spencerjibz (8aab52f)
-
add worker state as an enum by @spencerjibz (dc542d3)
-
add worker tests by @spencerjibz (6ebecf2)
-
add client to queue, support both favours of processors (sync and async) by @spencerjibz (9039e2b)
-
add nextest-config file by @spencerjibz (28b11cc)
-
add async-trait by @spencerjibz (981a0ce)
-
add store to examples by @spencerjibz (c1e6308)
-
add rocksdb as a store with a feature flag by @spencerjibz (74f9a92)
-
add basic example with redis-store by @spencerjibz (c202069)
-
add an in-memory-store and its example by @spencerjibz (0ed568d)
-
add timed-map to use in the in-memory-store by @spencerjibz (26b8169)
-
add timed locks to both stores by @spencerjibz (101be3d)
-
implement store.remove for in-memory-store && fix typo in JobState enum" by @spencerjibz (1725ff9)
-
add some utility functions by @spencerjibz (da06fb8)
-
add more fields to job-metrics by @spencerjibz (8bf8942)
-
add support for purging expired entries for store by @spencerjibz (0f0f12b)
-
add job metrics to complated event by @spencerjibz (64b6b6d)
-
enable disabling expirations on customTimedMap by @spencerjibz (0a84fde)
-
add delay from options to job_metrics by @spencerjibz (#30)
-
add resoure span to the worker by @spencerjibz (b152f98)
-
add logging to main_task and bug fix: stop main_loop on cancellation by @spencerjibz (c3d8613)
-
add logging to timers by @spencerjibz (dcf5070)
-
add logs and remodel loop and timer to promote delayed jobs too by @spencerjibz (d2b096f)
-
add a resource-span to queue by @spencerjibz (e9b0cae)
-
issue-templates by @spencerjibz (b4c02df)
-
add criterion benchmarks using inmemory-store by @spencerjibz (75c3427)
-
add an action for crition benchmarks by @spencerjibz (8bdaca1)
-
add missing meta-data for action by @spencerjibz (0c911e1)
-
add permissions for action to post results by @spencerjibz (#39)
-
add tests for panics in processors by @spencerjibz (893fc33)
-
add tokio-metrics as a dependency by @spencerjibz (639e34a)
-
add worker_metrics collection to worker and setup periodic heartbeat/collection timer by @spencerjibz (8c760dc)
-
add metrics collection to in-memory-store by @spencerjibz (a11d63c)
-
add metrics collection for redis-store by @spencerjibz (e0c6a4e)
-
add timestamps to track metrics updates by @spencerjibz (cab75f0)
-
add asset folder with logo by @spencerjibz (5ec1bf9)
-
add a helper macro for worker_tests by @spencerjibz (2a6158d)
-
add isolated tests for each store (inmemory or redis-store) by @spencerjibz (2aeedc9)
-
add helper macros for queue-tests for diffrent stores by @spencerjibz (e970dc6)
Other
-
rust library template (32dfa0a)
-
base job impl by @spencerjibz (c1646b9)
-
remove custom field-serializers by @spencerjibz (aae3824)
-
use dashmap and use owned values by @spencerjibz (fad0c4d)
-
use some generics for queue methods by @spencerjibz (43a7b47)
-
wip by @spencerjibz (82c12f1)
-
reorganise modules and supplement worker by @spencerjibz (c414985)
-
clippy fix by @spencerjibz (110e3b9)
-
Merge pull request #1 from spencerjibz/base-impl by @spencerjibz (#1)
-
ignore panic_test in backtrace_utils by @spencerjibz (ad436a9)
-
make timer simple by @spencerjibz (6e4830a)
-
minor fixes by @spencerjibz (d1d36de)
-
complete running worker with panic catches by @spencerjibz (4c13f3f)
-
use an serializable backtrace by @spencerjibz (26830bf)
-
remove unecessary deps and use std version of backtrace by @spencerjibz (3bba177)
-
create similar stacktraces by @spencerjibz (61f9702)
-
clippy fix by @spencerjibz (19267d7)
-
Merge pull request #3 from spencerjibz/working-runner by @spencerjibz (#3)
-
readme edit by @spencerjibz (1d6a267)
-
make job_state serializable from redis by @spencerjibz (77d94a6)
-
remove arc-swap by @spencerjibz (570f33e)
-
expose the worker's cancellation token by @spencerjibz (6474c44)
-
access the current job count from queue by @spencerjibz (d95fabf)
-
serialize datetimes as microsecond timestamps by @spencerjibz (de2ccfe)
-
ignore video files by @spencerjibz (d79837d)
-
improve backoff and add a method to fetch metrics to a job by @spencerjibz (149862b)
-
create a sample video file if none exists by @spencerjibz (#5)
-
Next stage (#6) by @spencerjibz (#6)
-
clean up after running transcoding by @spencerjibz (cc9af51)
-
download and install ffmpeg if its not available (#8) by @spencerjibz (#8)
-
simple code refactor by @spencerjibz (5a73a8f)
-
add support for skipping first_tick by @spencerjibz (dfd8f29)
-
job-schedulering-timer template by @spencerjibz (6379443)
-
set concurrency to number of logical cpus by @spencerjibz (c3601b8)
-
set number of cpus as default concurrency option by @spencerjibz (bd26ab4)
-
better delay support by @spencerjibz (1fa6f20)
-
completed impl by @spencerjibz (732da55)
-
only remove jobs if found by @spencerjibz (a1ef2b3)
-
make move_to_active_result debug printable by @spencerjibz (375f1e7)
-
re-use timer for scheduling delayed jobs, remove futures_concurrency primitive for running task by @spencerjibz (345de47)
-
use crossbeam queue, yield in busy loops to prevent race conditions by @spencerjibz (c3aa115)
-
emit progress to stream when it's updated by @spencerjibz (a9c9c52)
-
emit events directly from redis-streams by @spencerjibz (#10)
-
rebase conflict fix by @spencerjibz (de77c24)
-
add live metrics and opts to the queue by @spencerjibz (85368ce)
-
remove dashmap, completely lockfree impl by @spencerjibz (0a0159b)
-
update example to support all job features: delaying, prioritization by @spencerjibz (1f2bac8)
-
clean up by @spencerjibz (18feb2d)
-
use lockfree version of typed-emitter by @spencerjibz (2396420)
-
update uuid:dep by @spencerjibz (53322e2)
-
boxed some futures to reduce their size by @spencerjibz (b05890e)
-
wip by @spencerjibz (f5ba7b0)
-
only return joinhandle if timer is running by @spencerjibz (a7254fc)
-
Revert "fix retrials & remove crossbeam-skiplist" by @spencerjibz (d9a236e)
-
prioritize delayed jobs by @spencerjibz (c283935)
-
fail jobs that miss delay reschedule by @spencerjibz (34982c9)
-
reduce cpu usage during idle times by @spencerjibz (ba7b441)
-
make timers pausable by @spencerjibz (569b423)
-
pause both timer when queue and worker are idle by @spencerjibz (8a6e9b9)
-
improve examples by @spencerjibz (7856f22)
-
reduce string usage by @spencerjibz (979c1e0)
-
Support either pubsub or redis_stream as queue-event-stream by @spencerjibz (68c16dc)
-
wip by @spencerjibz (ab5da6a)
-
refactor and cleanup by @spencerjibz (a1104ef)
-
support for both modes by @spencerjibz (3945796)
-
use simple types in job and queue by @spencerjibz (a7733f1)
-
wip by @spencerjibz (6754e9f)
-
use simd_json by @spencerjibz (6938133)
-
cheap parsing when using redis-stream-events by @spencerjibz (4144ac2)
-
restore examples by @spencerjibz (e4c1577)
-
make bulk_add faster by @spencerjibz (5c8ff95)
-
clippy fix by @spencerjibz (06521b4)
-
repeat-opts-working progress by @spencerjibz (38f3a4f)
-
simple fixes by @spencerjibz (1592c5a)
-
increment ids correctly by @spencerjibz (6d44ee7)
-
update examples by @spencerjibz (00129bf)
-
code refactor by @spencerjibz (#13)
-
update the job_id after addition by @spencerjibz (f27f96e)
-
more queue tests by @spencerjibz (339f4d8)
-
:emitter_on is not an async function: correct this by @spencerjibz (538a281)
-
remove tokio_shared_rt and use a multithread runtime for worker tests by @spencerjibz (060620a)
-
fetch number of cpus by @spencerjibz (3ed68b1)
-
support both sync and async callbacks by @spencerjibz (a26d72f)
-
update examples and tests by @spencerjibz (44d9e75)
-
reorganise code structure by @spencerjibz (e72038a)
-
make job-update progress sync by @spencerjibz (54ab3a4)
-
update examples by @spencerjibz (0efb189)
-
restore connection-example by @spencerjibz (0728dcc)
-
Format README.md with proper headings and lists by @spencerjibz (b83ec7e)
-
make all errors public and the worker'id by @spencerjibz (8ef613f)
-
return an error if a worker is already running and a called to run is made by @spencerjibz (23dc2cd)
-
make CollectionSuffix enum and worker_state field pub by @spencerjibz (5c07d40)
-
create a store trait and a redis store by @spencerjibz (438f627)
-
clean up and use dynamic store logic in queue-impl by @spencerjibz (a131a23)
-
refactor to use dynamic stores by @spencerjibz (ddae040)
-
Integrate the Store trait into queue, worker and utils function by @spencerjibz (60ccf6e)
-
update tests with store by @spencerjibz (8d2cd80)
-
clippy fix by @spencerjibz (47f6a30)
-
make collectionSuffix serialized as an u64 tag by @spencerjibz (86efd8b)
-
move event-stream-handle creating from store implementations by @spencerjibz (2762b50)
-
complete Store trait impl for redis-store by @spencerjibz (eee2409)
-
dont run rocksdb-example in tests by @spencerjibz (29ffc99)
-
yield in task picker by @spencerjibz (e32a34f)
-
use parking_lot primitives instead by @spencerjibz (#16)
-
simple improvement to in-memory-store by @spencerjibz (41b3654)
-
refactor store.set_fields and move the
move_to_statemethod out of the store by @spencerjibz (2b1467a) -
clean and reduce store methods by @spencerjibz (ecb50b4)
-
expose important methods from store by @spencerjibz (51f8715)
-
clean up events && split functions in utils by @spencerjibz (61aebeb)
-
remove stream-handle, use emiiter directly to publish events for rocksdb and in-memory-store by @spencerjibz (506da8b)
-
clippy fix@ by @spencerjibz (61d5a38)
-
use a checked insert method by @spencerjibz (fc80401)
-
use a delay-queue for timers instead of spawning task (previous timer) by @spencerjibz (#18)
-
use tasktracker, add graceful shutdown by @spencerjibz (#19)
-
make redis-store optional by @spencerjibz (88c960e)
-
make redis-store a default feature by @spencerjibz (a6cfee3)
-
merge similar examples into a few with feature flags by @spencerjibz (#21)
-
use new timedmap by @spencerjibz (183a2f9)
-
only purge expired when ther e is some expiring soon by @spencerjibz (9f76297)
-
use atomiccell instead of arc-swap and use tokio-mutex for timed-map by @spencerjibz (183919d)
-
Refactor set_key to use Key directly by @spencerjibz (f14b97c)
-
clippy fix && reduce critical section for race condtion (when both mutexes are held by @spencerjibz (785879b)
-
purge both locks and jobs concurrenctly by @spencerjibz (923ecd3)
-
use length in purge_expired: inMemory by @spencerjibz (f13468e)
-
use a better and faster mutex by @spencerjibz (#22)
-
remove job from events, update examples and tests to reflct this by @spencerjibz (0e09ab3)
-
minor bug fixes(panics) too by @spencerjibz (d34e460)
-
update tests by @spencerjibz (#23)
-
clippy fix in examples by @spencerjibz (6872fb5)
-
minor changes by @spencerjibz (#24)
-
only use async version of xutex::Mutex by @spencerjibz (ad0c370)
-
use semaphore to limit concurrency by @spencerjibz (#25)
-
update queue-metrics in rocksdb-store by @spencerjibz (#33)
-
clean up main loop by @spencerjibz (7a98d6f)
-
wip by @spencerjibz (6d761d9)
-
clippy fix by @spencerjibz (2e420b5)
-
reduce verbosity of logging and refactor smt by @spencerjibz (85e4b72)
-
more logging by @spencerjibz (aab3733)
-
uncomment tokio-console directives by @spencerjibz (f60217f)
-
store joinhandle of running tasks instead of their ids only by @spencerjibz (8545cd5)
-
better debug formating for TimerType::PromoteJob by @spencerjibz (36f672a)
-
PR template by @spencerjibz (#36)
-
main_loop fix: only proceed processing if a permit is available by @spencerjibz (#37)
-
make Timer public by @spencerjibz (a08e0a9)
-
make a worker_opts a copy type by @spencerjibz (98a2c35)
-
clippy fix by @spencerjibz (d2bbefe)
-
clean & better usage of atomic ordering by @spencerjibz (989189c)
-
guard data in timed_maps with a parking_lot primitives by @spencerjibz (83d0178)
-
use parking_lot mutex instead rwlock for in-memory-store by @spencerjibz (#38)
-
maintain Acquire-Release ordering by @spencerjibz (68a8518)
-
exclude library tests from benchmarks by @spencerjibz (77b695e)
-
use the latest stable for benchmarks by @spencerjibz (ebe2dbc)
-
wip by @spencerjibz (7552a70)
-
exclude library tests in benchmarks && fix caching by @spencerjibz (faed406)
-
catch panics from sync_processors by @spencerjibz (a200802)
-
expose worker-metrics methods from store by @spencerjibz (31e60e1)
-
collect metrics from timers by @spencerjibz (4449e36)
-
minor metrics updates by @spencerjibz (9c209a9)
-
a clippy fix by @spencerjibz (#41)
-
make all fields in WorkerMetrics pub by @spencerjibz (be3a0a1)
-
make worker_metrics clonable and comparable by @spencerjibz (b4653a6)
-
export our timedmap implementation to the library users by @spencerjibz (2d843cd)
-
make the
insert_expirablemethod sync by @spencerjibz (b76a039) -
don't hold on to mutex for long by @spencerjibz (a0c8b10)
-
strictly use async-mutex event in sync code by @spencerjibz (55654f6)
-
collective metrics for the user's processor function instead of the worker task by @spencerjibz (5dc9271)
-
Fix task metrics collection: instrument spawned future, fix TTL bug, fallback task_id, add test by @Copilot (910ca34)
-
comments clean up by @spencerjibz (80d6f37)
-
clippy clean-up by @spencerjibz (#43)
-
library-rename by @spencerjibz (6b573d6)
-
library name correction in readme by @spencerjibz (585e1b2)
-
replace crossbeam-sub-crates(queue& utils) by @spencerjibz (48af5ca)
-
replace usage of atomic_ref_cell by @spencerjibz (eabf62b)
-
clippy fixes by @spencerjibz (#47)
-
fix clippy warnings by @spencerjibz (#46)
-
Complete documentation coverage: all public items documented, no missing-docs gaps by @Copilot (55274f2)
-
Center lib.rs header with div align=center and downshift all heading levels by one by @Copilot (a8731ce)
-
Add logo image to lib.rs centered header block by @Copilot (11c134d)
-
Link RedisStore in top description alongside InMemoryStore by @Copilot (bad5147)
-
Move Tokio runtime requirements section before Installation in lib.rs docs by @Copilot (1ec88cd)
-
fix updating_metrics bug and add panics section to README by @Copilot (11063e6)
Contributors
-
@Copilot
-
@blacksmith-sh[bot]