Status update, May 2021 May 16, 2021 on Drew DeVault's blog

Hello! This update is a bit late. I was travelling all day yesterday without internet, so I could not prepare these. After my sister and I got vaccinated, I took a trip to visit her at her home in beautiful Hawaii — it felt great after a year of being trapped within these same four walls. I hope you get that vaccine and things start to improve for you, too!

In SourceHut news, I’ve completed and shipped the first version of the builds.sr.ht GraphQL API. Another update, implementing the write functionality, will be shipping shortly, once the code review is complete. The next one up for a GraphQL API will probably be lists.sr.ht. After that it’s just man.sr.ht, paste.sr.ht, and dispatch.sr.ht — all three of which are pretty small. Then we’ll implement a few extra features like GraphQL-native webhooks and we’ll be done!

Adnan Maolood has also been hard at work improving godocs.io, including the now-available gemini version. I wrote a post just about godocs.io earlier this month.

Here’s some secret project code I’ve been working on recently:

use errors;
use fmt;
use linux::io_uring::{setup_flags};
use linux::io_uring;
use strings;

export fn main() void = {
        let params = io_uring::params { ... };
        let ring = match (io_uring::setup(32, &params)) {
                err: io_uring::error => fmt::fatal(io_uring::strerror(err)),
                ring: io_uring::io_uring => ring,
        };
        defer io_uring::finish(&ring);

        let sqe = match (io_uring::get_sqe(&ring)) {
                null => abort(),
                sqe: *io_uring::sqe => sqe,
        };
        let buf = strings::toutf8("Hello world!\n");
        io_uring::write(sqe, 1, buf: *[*]u8, len(buf));
        io_uring::submit_wait(&ring, 1)!;
        let cqe = match (io_uring::get_cqe(&ring, 0, 0)) {
                err: errors::opaque =>
                        fmt::fatal("Error: {}", errors::strerror(err)),
                cqe: nullable *io_uring::cqe => {
                        assert(cqe != null);
                        cqe: *io_uring::cqe;
                },
        };
        fmt::errorfln("result: {}", cqe.res)!;
};

The API here is a bit of a WIP, and it won’t be available to users, anyway — the low-level io_uring API will be wrapped by a portable event loop interface (tentatively named “iobus”) in the standard library. I’m planning on using this to write a finger server.

⇒ This article is also available on gemini.

Have a comment on one of my posts? Start a discussion in my public inbox by sending an email to ~sircmpwn/public-inbox@lists.sr.ht [mailing list etiquette]

Articles from blogs I read Generated by openring

Status update, May 2022

Hi all! This month’s status update will be shorter than usual, because I’ve taken some time off to visit Napoli. Discovering the city and the surrounding region was great! Of course the main reason to visit is to taste true Neapolitan pizza. I must admit, th…

via emersion May 24, 2022

What's cooking on SourceHut? May 2022

Hello everyone! We’re back at it for another month of news in the SourceHut sphere. Of our now 29,036 users, 630 are new this month: please offer them a warm welcome, and your patience, as they learn about the new platform. todo.sr.ht Comprehensive GraphQL-na…

via Blogs on Sourcehut May 16, 2022

Summary of changes for April

Hey everyone! This is the list of all the changes we've done to our projects and apps during the month of April. We'll also be reporting in our on position in the world, and on our future plans. Summary Of Changes Bicycle, released an Uxntal pla…

via Hundred Rabbits May 1, 2022