/'su.la/ for the suffix of capsule in Spanish, Cápsula.
Git
A Gemini protocol server written in Scryer Prolog.
sula depends on a patched Scryer Prolog which can be found here (branch js/fixes ). The required patches are:
A native '$copy_stream'/2 builtin used for streaming binary file bodies to TLS clients without materialising the contents on the Prolog heap.
builtin used for streaming binary file bodies to TLS clients without materialising the contents on the Prolog heap. A fix to library(pio) ’s buffer_prepare_for_n/5 so that lazy reads from process pipes (and other streams whose at_end_of_stream/1 never reports true) terminate on EOF instead of spinning.
’s so that lazy reads from process pipes (and other streams whose never reports true) terminate on EOF instead of spinning. A non-blocking poll loop in socket_server_accept/4 that checks Scryer’s INTERRUPT flag, so SIGINT becomes a catchable '$interrupt_thrown' exception instead of being trapped behind a blocking syscall.
that checks Scryer’s flag, so becomes a catchable exception instead of being trapped behind a blocking syscall. A port to rustls .
. A modification of tls_server_negotiate to include the optional client certificate.
Build and install the patched Scryer:
... continue reading