Status update, June 2020

Published 2020-06-15 on Drew DeVault's blog

Like last month, I am writing to you from the past, preparing this status update a day earlier than usual. This time it’s because I expect to be busy with planned maintenance tomorrow, so I’m getting the status updates written ahead of time.

aerc has seen lots of patches merged recently thanks to the hard work of co-maintainer Reto Brunner and the many contributors who sent patches, ranging from a scrollable folder list to improvements and bugfixes for PGP support. We wrapped all of this up in the aerc 0.4.0 release in late May. Thanks to Reto and all of the other contributors for their hard work on aerc!

Wayland improvements have also continued at a good pace. I’ve mentioned before that wlroots is a crucial core component tying together a lot of different parts of the ecosystem — DRM/KMS, GBM, OpenGL, libinput, udev, and more — bringing together integrations for many disparate systems and providing a single unified multiplexer for them over the Wayland protocol. Taking full advantage of all of these systems and becoming a more perfect integration of them is a long-term goal, and we’ve been continuing to make headway on these goals over the past few weeks. We are working hard to squeeze every drop of performance out of your system.

In the SourceHut world, I’ve been working mainly on GraphQL support, as well as Alpine 3.12 upgrades (the latter being the source of the planned outage). I wrote in some detail on the blog about why and how the GraphQL backends are being implemented, if you’re curious. The main development improvements in this respect which have occured since the last status updates are the introduction of a JavaScript-free GraphQL playground, and a GraphQL API for Coming improvements will include an overhaul to authentication and OAuth2 support, and a dramatically improved approach to webhooks. Stay tuned!

That’s all for the time being. Thank you for your support and attention, and stay safe out there. I’ll see you next month!

$ cat strconv/itos.$redacted
use bytes;
use types;

 * Converts an i64 to a string, in base 10. The return value is statically
 * allocated and will be overwritten on subsequent calls; see [strings::dup] to
 * duplicate the result, or [strconv::itosb] to pass your own string buffer.
 *	let a = strconv::i64tos(1234);
 *	io::printf("%s", a); // 1234
 *	let a = strconv::i64tos(1234);
 *	let b = strconv::i64tos(4321);
 *	io::printf("%s %s", a, b); // 4321 4321
export fn i64tos(i: i64) const *str =
	static assert(types::I64_MAX == 9223372036854775807,
		"Maximum integer value exceeds buffer length");
	static let s = struct {
		l: size = 0,
		b: [22]u8 = [0: u8...], /* 20 digits plus NUL and '-' */
	s.l = 0;
	s.b = [0: u8...];

	const isneg = i < 0;
	if (isneg) {
		s.b[s.l] = '-': u8;
		s.l += 1;
		i = -i;
	} else if (i == 0) {
		s.b[s.l] = '0': u8;
		s.l += 1;

	while (i > 0) {
		s.b[s.l] = '0': u8 + (i % 10): u8;
		s.l += 1;
		i /= 10;

	const x: size = if (isneg) 1 else 0;

	s.b[s.l] = 0: u8;
	return &s: *str;

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

Are you a free software maintainer who is struggling with stress, demanding users, overwork, or any other social problems in the course of your work? Please email me — I know how you feel, and I can lend a sympathetic ear and share some veteran advice.

Articles from blogs I follow around the net

A Satisfactory Way of Building

With apologies, as usual, to Christopher Alexander. Satisfactory is a first-person factory construction game. COVID-19 has given me license to spend FAR too much time playing it, and I’d like to share a few thoughts that I hope might prove useful, or at le…

via Aphyr: Posts June 21, 2020

Time to upgrade your monitor

A non-comprehensive and opinionated guide to best monitor for programming

via June 17, 2020

Status update, June 2020

Time for a new monthly status update! Let’s start with Wayland stuff. Once again I’ve continued working on wlroots’ DRM backend. I’ve submitted a bunch of bugfixes for all of the atomic refactoring done last month. I’ve also started working on integrating…

via emersion June 17, 2020

Generated by openring