EPUB reader written in Haskell
  • Haskell 92%
  • Scheme 4.5%
  • Shell 3.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Marko Andjelic 81c2caaf67
add worker thread tracking
add stGen which gets bumped for every worker thread spawned by
loadBook

every thread captures stGen when it spawns and before actually loading
the book in the main thread, and in the worker thread it checks if
myGen == stGen

this throws away stale requests, meaning if you try and load another
book while one is still loading, it will ignore the one still loading
and start loading the latest request
2026-07-02 02:50:31 +01:00
app add worker thread tracking 2026-07-02 02:50:31 +01:00
test refactor: streaming loader, hierarchical TOC, parser robustness 2026-06-26 03:45:29 +01:00
.envrc fix guix dev setup, add hls to dev env 2026-06-23 23:50:49 +01:00
.gitignore add gitignore 2026-01-20 22:37:24 -04:00
guix.scm fix guix dev setup, add hls to dev env 2026-06-23 23:50:49 +01:00
LICENSE Initialization 2026-01-21 01:23:54 +00:00
README.md Initialization 2026-01-21 01:23:54 +00:00
run-svitak.sh fix: build outside the guix container, run the binary inside 2026-06-26 03:44:18 +01:00
svitak.cabal refactor: streaming loader, hierarchical TOC, parser robustness 2026-06-26 03:45:29 +01:00

Svitak 📖

A minimal EPUB parser and reader written in Haskell.

Installation

System prerequisites:

  • GHC ≥ 9.10
  • GTK / WebKit system libraries (required by gi-gtk and gi-webkit)

Dependencies

Arch:

sudo pacman -S \
  ghc cabal-install \
  gtk4 \
  webkitgtk-6.0 \
  gobject-introspection \
  pkgconf

Feel free to make a pull request for instructions regarding your OS/distro

Clone the repo

git clone "https://git.ajattix.org/castelia/svitak.git" && cd svitak

Building

Update the package index (optional but recommended):

cabal update

Proceed with building:

cabal build