[Daniel's week] November 17, 2023

Daniel Stenberg daniel at haxx.se
Fri Nov 17 18:15:23 CET 2023


Hi friends!

## httpget 0.1

On November 11 we passed the 27th anniversary since httpget 0.1 was released 
[1]. That was the tool I first found and started my ventured into HTTP 
programming that would later become curl.

## mastering libcurl

I spent a significant amount of time and energy to get the slides and examples 
done for the mastering libcurl session and I ran the part one on Wednesday, 
now available on YouTube [2]. It ran for a little over two hours, and I 
suspect the second part [3] that I will do on this coming Monday will be at 
least as long.

## c-ares

Brad House has continued to polish and improve c-ares recently so I pushed 
some buttons and c-ares 1.22.0 was released [6]. We saw some early bug reports 
and there have been fixes so it looks like there is going to be a follow-up 
patch release coming out really soon.

## 100 operating systems

I posted my old "curl has ran on these operating systems" slide on Mastodon 
this week. The slide is a result of a concerned effort of me collecting 
mentions and facts over the last few years. The first version I posted this 
week I believe had 92 operating systems. It is curious how every time I do 
this, there are people out there who can tell me about more systems that curl 
has run on that were not already mentioned.

At the time of this writing, the slide now features 101 named operating 
systems [4], and then I even removed two entries that were questionable if 
they actually were their own unique operating systems. It seems that if we 
just give it enough time and I keep posting the slide every once in a while, 
we can keep adding names to it.

I will of course use that slide in presentations to show off.

## URL parsing

I decided to double-check the Ada URL parser's [5] claims that it parses URLs 
7-10 times faster than libcurl. Ada is the relatively new URL parser the Node 
project is using.

Turns out that this speed claim is only valid on a certain subset of CPU 
architectures for which they have written magic optimizations, and that subset 
does not include my current 13th gen Intel Core I7. On my machine, their 
parser is typically 1.3 - 1.8 times faster. Still notable faster of course.

This said: Ada parses WHATWG URLs and libcurl parses RFC3986-URLs. They are 
not necessarily treating the same input URL the same way and they don't offer 
the exact same feature set, so they are not quite apples vs apples.

Also, the Ada parser is 22,000 lines of code while libcurl's is at 1,900.

I'm sure there is room for further improvement of libcurl's parser still in 
terms of performance, but its established API sets some restrictions on what 
can be done.

## Peer Bonus

Google runs an internal program in which their employees can suggest Open 
source project/people to receive "a bonus" [7]. I received such a bonus this 
week, which by my count is about the 4th time I receive this honor. Apart from 
getting a signed thank you note from a "director of Google Open Source", it is 
supposed to also be a monetary component. It does not say anywhere how much 
and I have so far not seen any money received in my end. I don't expect the 
amount to raise any eyebrows.

## Coming up

- Mastering libcurl part two on Monday

## Links

[1] = https://curl.se/docs/history.html
[2] = https://youtu.be/ZQXv5v9xocU
[3] = https://daniel.haxx.se/blog/2023/11/01/mastering-libcurl/
[4] = https://mastodon.social/@bagder/111416933480364540
[5] = https://github.com/ada-url/ada
[6] = https://c-ares.org/
[7] = https://daniel.haxx.se/blog/2023/11/11/another-google-open-source-peer-bonus/

-- 

  / daniel.haxx.se


More information about the daniel mailing list