<>

What can we learn from programming language version numbers?

Analyzing the version numbers of 621 programming languages

Interactive Version

May 25, 2024 — I just pushed version 93.0.0 of my language Scroll. Version 93!

Why so many versions? I use Tom Preston-Warner's Semantic Versioning (2011).

In particular, I followed his advice in Major Version Numbers are Not Sacred.

*

Pushing so many major versions was no big deal because Scroll was a toy.

But Scroll now has a novel feature that makes it very useful.

I need to decide if I should ship fewer major versions with higher quality.

*

Let's do some research on what other programming language developers are doing.

I added version number data to over 600 languages in PLDB.

*

What major version are programming languages on?

0Min 1Median 2.9Average
73%< v3 95%< v10 99%< v30

Wow! No languages in the top 400 have surpassed 30 major versions.

Erlang, at version 27, ranks #34 and is the only top 100 language with more than 25 major versions.

My language, at version 93, is a huge outlier. Maybe I've done something wrong 😳.

*

Let's plot version number by rank.

Interactive Version

We can see that there is a positive correlation between how many major versions a language has and how popular it is.

However, we can also see that 5 of the top 10 languages are on version 5 or less.

We can also see that ~15 of the top 25 languages are on version 5 or less.

If you have a great model of your core ideas, you can ship fewer major versions.

*

What's the relationship between age of the language and the current major version?

Interactive Version

Did Semantic Versioning, published in 2011, change release rates of major versions of programming languages?

No. As you can see:

Interactive Version

*

So, what did I learn?

TIL I did SemVer wrong. In particular, I missed this part:

If you’re changing the API every day you should...still be in version 0.y.z

Whoops!

It took me about 5 years to figure out what Scroll 1.0.0 should be. I should be on version 0.93.0, not version 93.0.0.

No big deal. I will soon release Scroll 100.0.0, and from then on will have far fewer major releases.

An ounce of deep thought on the core of your language is worth a pound of major releases!

Other things I learned

I learned a few things today. Hope you did too!

Notes




Built with Scroll v161.0.0