Add safe-async and vectordb

This commit is contained in:
asonix 2023-07-30 11:01:34 -05:00
parent e0d7bcdc6e
commit f0de742ef1

View file

@ -159,7 +159,7 @@
</article>
</section>
<section>
<h2>Projects</h2>
<h2>Notable Projects</h2>
<article>
<h3>pict-rs</h3>
<p>
@ -207,6 +207,59 @@
day. It does this with a limit of two CPUs on one of my single-board computers.
</p>
</article>
<article>
<h3>Safe Async</h3>
<p>
<em>
<a href="https://git.asonix.dog/safe-async" target="_blank">
Safe Async on Forgejo
</a>
</em>
</p>
<p>
Safe Async is a collection of components that make up a full asynchronous runtime for
rust, made without any unsafe code. This is more a demonstration of possibility rather
than an attempt to build a real production-grade runtime. Safe Async achieves this by
relying on
<a href="https://github.com/bytecodealliance/rustix" target="_blank">#rustix</a>, a
library that provides safe bindings to posix APIs like <code>poll</code>.
</p>
<p>
Safe Async is made of multiple components. At the lowest level, the <code>polldance</code>
library provides an abstraction for registering and deregistering IO sources and Timers
from an underlying polling mechanism. Next up from that is <code>foxtrot</code>, a library
that uses polldance to create and wake IO futures with polldance. Up from there are
<code>jitterbug</code> and <code>bachata</code>, which are multithreaded and
single-threaded async executors that can be driven as futures on another runtime. And
finally, there's <code>jive</code>. A full async runtime that combines the above libraries
to provide a unified API for spawning and running tasks with IO.
</p>
<p>
Safe Async also provides a number of utilities that are useful for working in async rust,
like an implementation of select, join, join-all, notify, and mpsc. Simple integrations
are provided with trust-dns (jive-dns) for asynchronous DNS resolution and hyper
(hyperjive) for asynchronous HTTP clients and servers.
</p>
</article>
<article>
<h3>VectorDB</h3>
<p>
<em>
<a href="https://git.asonix.dog/asonix/vectordb">
VectorDB on Forgejo
</a>
</em>
</p>
<p>
VectorDB is a simple database for storing and searching vectors in Rust, backed by
<a href="https://www.redb.org" target="_blank">#redb</a>, an embedded key-value store for
rust (similar to sled). My goal in building VectorDB was to implement reverse image search
functionality for pict-rs, or maybe as a standalone application that works with pict-rs.
While the database itself is pretty quick for finding similar vectors, actually computing
those vectors using imagemagick takes a while. For this reason I am not currently pursuing
reverse image search.
</p>
</article>
<article>
<h3>Various Libraries</h3>
<p>
@ -214,35 +267,28 @@
</p>
<ul>
<li>
<a href="https://git.asonix.dog/asonix/activitystreams" target="_blank">
activitystreams
</a>, a library for parsing and generating valid ActivityStreams JSON objects
<a href="https://git.asonix.dog/asonix/activitystreams" target="_blank">activitystreams</a>,
a library for parsing and generating valid ActivityStreams JSON objects
</li>
<li>
<a href="https://git.asonix.dog/asonix/actix-form-data" target="_blank">
actix-form-data
</a>, a library for handling uploaded <code>multipart/formdata</code> in actix-web
<a href="https://git.asonix.dog/asonix/actix-form-data" target="_blank">actix-form-data</a>,
a library for handling uploaded <code>multipart/formdata</code> in actix-web
</li>
<li>
<a href="https://git.asonix.dog/asonix/actix-webfinger" , target="_blank">
actix-webfinger
</a>, a library for making and serving requests for webfinger in actix-web
<a href="https://git.asonix.dog/asonix/actix-webfinger" , target="_blank">actix-webfinger</a>,
a library for making and serving requests for webfinger in actix-web
</li>
<li>
<a href="https://git.asonix.dog/asonix/actix-actorless-websockets" target="_blank">
actix-ws
</a>, a library for managing websocket connections in actix-web without the actix actor
framework
<a href="https://git.asonix.dog/asonix/actix-actorless-websockets" target="_blank">actix-ws</a>,
a library for managing websocket connections in actix-web without the actix actor framework
</li>
<li>
<a href="https://git.asonix.dog/asonix/background-jobs" target="_blank">
background-jobs
</a>, a library for managing retryable tasks that run in the background of an application
<a href="https://git.asonix.dog/asonix/background-jobs" target="_blank">background-jobs</a>,
a library for managing retryable tasks that run in the background of an application
</li>
<li>
<a href="https://git.asonix.dog/asonix/http-signature-normalization" target="_blank">
http-signature-normalization
</a>, a library implementing the HTTP Signatures IETF draft
<a href="https://git.asonix.dog/asonix/http-signature-normalization" target="_blank">http-signature-normalization</a>,
a library implementing the HTTP Signatures IETF draft
</li>
<li>
<a href="https://git.asonix.dog/asonix/tracing-awc" target="_blank">tracing-awc</a>, a