[Daniel's week] August 16, 2024

Daniel Stenberg daniel at haxx.se
Fri Aug 16 16:33:14 CEST 2024


Hello friends.

This was a good and busy week.

## logos

I created a fun little wcurl logo last week, and when Viktor Szakats found
out, he immediately converted it into an SVG vector version that was just a
small fraction in size compared to my original and yet it will scale much
better when displayed on high resolutions screens.

He also did the similar makeover task on the trurl logo, which is way more
complicated since it features a robot image that is a 1.1MB vector in the
original. Viktor still managed to produce an SVG version of the logo that is
smaller than the JPEG we previously used.

These logos, and some other variations, can now be found on the generic curl
logo collection page [1] on the website.

## verbose

One of the *16* different changes we have merged in curl while the feature
window has been open is the new support for -vv, -vvv and -vvvv in curl and I
figured I should explained it to the world[3].

We have also landed 143 bugfixes in these 16 days since the last release, so
the activity has been high on all fronts.

## llist / hash / splay

This week's janitor task for me was to go through three internal key
components in libcurl and clean them up: stop accessing structs directly -
provide access functions, add lots of asserts to detect API misuse in debug
builds and then finally document how they work in a new docs file. The
components were llist for linked lists, hash for hash tables and splay for
splay trees. This work (mostly the new asserts really) then also made me spot
a few minor bugs that I cleaned up.

I picked these particular components because they are old, have not changed
much over the last decade and they are fairly stand-alone with decently clean
internal APIs.

## docs/internals

As I added this new documentation for internal APIs I mentioned above, I
decided it was about time to separate the generic curl docs folder a little
bit and move the "internals" documents into a subdirectory. Mostly to make it
easier for mere mortals to avoid having to "wade through" stuff they might not
be interested in.

## narrower manual

The ASCII-only curl help output, as shown with curl -M, and with the new -h
[option] would previously sometimes get the occasional overly long lines. This
could easily happen for example when we provide examples for an option and
those examples use multiple long words and flags.

It recently caused a bug in the -h [option] code, that triggered a PR of mine
that merged this week [9] that properly word wraps example command lines and
for the quoted parts where the script cannot word wrap text itself, the build
process will now exit with an error on too long lines. To make us manually
make sure the output looks fine and stays within 80 columns with.

## nerding out

The other day I visited to the Nerding out with Viktor podcast, and this week
that episode [5] went public. Lots of talk about and around curl of course,
but also open source sustainability and much more.

## Focus on Linux

In another podcast called Focus on Linux, I was invited together with Powen
Shiah from the Sovereign Tech Fund in an episode [6] recorded two weeks ago.
The discussion was of course around Open Source funding, sustainability and
how it was for the curl project to be funded by the STF etc.

## TCP connect

After a curl issue about it taking a long time for curl to connect to local
host in a specific use case research into why took me down a rabbit hole and
after that I decided to write up my findings about TCP on Windows because I
think these are subtle but important details not a lot of people now. Why TCP
connects can be slow on Windows [3].

## Department of Energy

In a typical bureaucratic US government organization style, the US Department
of Energy emailed me [4] "requiring" me to fill in some forms for them
explaining details about a specific libcurl version. I of course could not
resist publishing the entire thing on my blog but I also responded saying I
can certainly do this as soon as we have a customer/supplier relationship.

I don't expect them to answer.

## Deprecating hyper

Back in April I asked the question on the libcurl mailing list if keeping
hyper support in libcurl was "worth the effort". Then, we decided to postpone
the decision a while to see if someone would hear the cry and maybe someone
would appear with some time and energy to fix this. An organization I talked
to expressed hope that they would hire and make such a person available for
this work.

Nothing of that kind happened, and in fact basically nothing has happened with
hyper in curl in the mean time. So, as of now, hyper support is officially
being deprecated from curl. If there is no major effort *in progress* before
February 2025, we will remove all traces of hyper support from curl [7].

I still believe it was a sensible experiment and effort. But it did not stick.

## Investing in rust

Related to the dropping of hyper from curl, Shane Miller published a report
called "Investing in Rust" [8] last month that references and quotes several
of my posts about hyper in curl.

## Coming up

- The curl feature window for 8.10.0 closes tomorrow

## Links

[1] = https://curl.se/logo/
[2] = https://daniel.haxx.se/blog/2024/08/12/verbose-verboser-verbosest/
[3] = https://daniel.haxx.se/blog/2024/08/14/slow-tcp-connect-on-windows/
[4] = https://daniel.haxx.se/blog/2024/08/14/so-the-department-of-energy-emailed-me/
[5] = https://vpetersson.com/podcast/S01E17.html
[6] = https://focusonlinux.podigee.io/113-sovereign-tech-fund
[7] = https://github.com/curl/curl/blob/master/docs/DEPRECATE.md#hyper
[8] = https://www.lawfaremedia.org/article/investing-in-rust
[9] = https://github.com/curl/curl/pull/14543

-- 

  / daniel.haxx.se


More information about the daniel mailing list