Status update, January 2021 January 15, 2021 on Drew DeVault's blog

Hello from the future! My previous status update was last year, but it feels like it was only a month ago. I hope you didn't miss my crappy jokes too much during the long wait.

One of the advancements that I would like to mention this month is the general availability of godocs.io, which is a replacement for the soon-to-be-obsolete godoc.org, based on a fork of their original codebase. Our fork has already attracted interest from many contributors who wanted to work on godoc.org, but found the Google CLA distasteful. We've been hard at work excising lots of Google crap, rewriting the indexer to use PostgreSQL instead of GCP, and making the little JavaScript bits more optional & more conservative in their implementation. We also plan to update it with first-class support for Go modules, which was never added to the upstream gddo codebase. Beyond this, we do not plan on making any large-scale changes: we just want godoc.org to keep being a thing. Enjoy!

On SourceHut, the first point of note is the new dark theme, which is automatically enabled when your user-agent configures prefers-color-scheme: dark. It has gone through a couple of iterations of refinement, and I have a few more changes queued up for my next round of improvements. Please let me know if you notice anything unusual! Additionally, I broke ground on the todo.sr.ht API 2.0 implementation this month. It required some minor changes to our underlying GraphQL approach, but in general it should be fairly straightforward — albeit time consuming — to implement. Ludovic has also started working on an API 2.0 branch for hg.sr.ht, which I plan on reviewing shortly.

Small projects have enjoyed some improvements as well. mkproof grew multi-processor support and had its default difficulty tweaked accordingly — thanks, Tom! Zach DeCook and Nolan Prescott also sent some bugfixes for gmnisrv, and René Wagner and Giuseppe Lumia both helped fix some issues with gmni as well. Jason Phan sent an improvement for dowork which adds random jitter to the exponential backoff calculation. Thanks to all of these folks for their help!

That's all for today. Thanks again for your support and attention, and I'll see you again soon!

...

I have actually been working on this a lot this month. Progress is good.

fn measurements() void = {
	const x = "Hello!";
	assert(len(x) == 6z);
	assert(size(str) == size(*u8) + size(size) * 2z);
	const align: size =
		if (size(*u8) > size(size)) size(*u8)
		else size(size);
	assert(&x: uintptr: size % align == 0z);
};

fn charptr() void = {
	const x = "Hello!";
	const y = x: *const char;
	const z = y: *[*]u8;
	const expected = ['H', 'e', 'l', 'l', 'o', '!', '\0'];
	for (let i = 0z; i < len(expected); i += 1z) {
		assert(z[i] == expected[i]: u32: u8);
	};
};

fn storage() void = {
	const string = "こんにちは";
	const ptr = &string: *struct {
		data: *[*]u8,
		length: size,
		capacity: size,
	};
	assert(ptr.length == 15z && ptr.capacity == 15z);

	// UTF-8 encoded
	const expected = [
		0xE3u8, 0x81u8, 0x93u8, 0xE3u8, 0x82u8, 0x93u8, 0xE3u8, 0x81u8,
		0xABu8, 0xE3u8, 0x81u8, 0xA1u8, 0xE3u8, 0x81u8, 0xAFu8, 0x00u8,
	];
	for (let i = 0z; i < len(expected); i += 1z) {
		assert(ptr.data[i] == expected[i]);
	};
};

export fn main() void = {
	measurements();
	charptr();
	storage();
};

⇒ 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, July 2021

Hi! This status update comes a bit late, because I was on leave, biking in the south of France for a few days. This month I’ve released mako 1.6, to try to make up for the long delay for the last release. mako 1.6 brings quality-of-life improvements: modes a…

via emersion July 21, 2021

The mythical 10× programmer is just a good leader

There is some truth to the idea that some programmers are more productive than others. In practice, this is mainly a function of the breadth and depth of their experience, rather than an expression of innate talent. Under the right circumstances, the differe…

via Blogs on Sourcehut July 17, 2021

Summary of changes for June

Hey everyone! This is the list of all the changes we've done to our projects and apps during the month of June. We'll also be reporting in our on position in the world, and on our future plans. Summary Of Changes Nasu, released a nasu guide, and…

via Hundred Rabbits July 1, 2021