flat assembler
Message board for the users of flat assembler.

Index > Main > fasmg version numbering

Author
Thread Post new topic Reply to topic
Tomasz Grysztar



Joined: 16 Jun 2003
Posts: 8356
Location: Kraków, Poland
Tomasz Grysztar 19 Oct 2016, 19:57
I have decided to use a new version numbering scheme for fasmg, to make sure that its version numbers would not be confused with fasm 1.x.

First I had an idea that I could use the "g" as a major version number, so it would be "g.x" (just like fasm2 would be fasm with version "2.x"). As for what comes after the dot, I was quite happy with using the timestamp (this was a nod to the fact that fasm 1 packages used to be updated more often than the core version number changed and that the date of packaging used to be the only reliable indicator of the update) but these long numbers were a bit clumsy and hard to compare. But then I thought: well, if I make a bold move to make the major version a letter, then why not let the whole version number use letters too? So I switched to base 36 and divided the timestamp by 50, to get a relatively short sequence of letters that is a number in base 36 and can still be easily compared to know which of the versions is later.

The first release I made under this scheme has a version number "g.hl3r1".
Post 19 Oct 2016, 19:57
View user's profile Send private message Visit poster's website Reply with quote
ender



Joined: 03 Nov 2004
Posts: 11
Location: London, UK
ender 19 Oct 2016, 20:04
Why, for the frak's sake, 50?!

_________________
&r
Post 19 Oct 2016, 20:04
View user's profile Send private message Reply with quote
l_inc



Joined: 23 Oct 2009
Posts: 881
l_inc 19 Oct 2016, 23:06
Quote:
Why, for the frak's sake, 50?!

Probably the least number of seconds ever elapsed between two successive versions of fasm. Smile

_________________
Faith is a superposition of knowledge and fallacy
Post 19 Oct 2016, 23:06
View user's profile Send private message Reply with quote
idle



Joined: 06 Jan 2011
Posts: 440
Location: Ukraine
idle 20 Oct 2016, 07:07
confusing, imho
Post 20 Oct 2016, 07:07
View user's profile Send private message Reply with quote
Tomasz Grysztar



Joined: 16 Jun 2003
Posts: 8356
Location: Kraków, Poland
Tomasz Grysztar 20 Oct 2016, 09:29
l_inc wrote:
Quote:
Why, for the frak's sake, 50?!

Probably the least number of seconds ever elapsed between two successive versions of fasm. Smile
This is actually a good point. Wink

But in truth, I just experimented with a few values and selected the first one that looked OK to me. I wanted no more than five characters, but with still enough precision to increase when fixes are applied just a couple of minutes later.

Now that I think about it more, I find that I could invent some "reasons" why 50 is a good choice (or at least an "OK" one). The range of the last two digits is 36*36*50 seconds, which is a rough approximation of 2^16 (but it is also just an exact 18 hours). Therefore the first three digits/characters represent more or less the high word of timestamp, and the other two - the low one. Only the first three digits are usually going to matter, but the additional two may make any particular number more recognizable.
Post 20 Oct 2016, 09:29
View user's profile Send private message Visit poster's website Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 20423
Location: In your JS exploiting you and your system
revolution 20 Oct 2016, 13:37
Tomasz Grysztar wrote:
... version numbering ..."g.hl3r1".
Although base-36 is a valid numbering system, not many people would consider it a "number". Version string feels a bit more realistic IMO.
Post 20 Oct 2016, 13:37
View user's profile Send private message Visit poster's website Reply with quote
Tomasz Grysztar



Joined: 16 Jun 2003
Posts: 8356
Location: Kraków, Poland
Tomasz Grysztar 20 Oct 2016, 13:42
revolution wrote:
Although base-36 is a valid numbering system, not many people would consider it a "number". Version string feels a bit more realistic IMO.
Yes, you are right, especially since I don't consider the "g" in place of major version a number. It is just a character "g" there.
Post 20 Oct 2016, 13:42
View user's profile Send private message Visit poster's website Reply with quote
Tomasz Grysztar



Joined: 16 Jun 2003
Posts: 8356
Location: Kraków, Poland
Tomasz Grysztar 01 May 2020, 09:45
Since fasmg has matured and reached the point of relative stability, I realized I do not really need new version string every 50 seconds. For this reason I am dropping the fifth character after the dot, starting with version "g.iwv7". This makes new version string available every half an hour, still fast enough for me to be able to make frequent updates if needed.

As the actual version identifier is now exactly 4 characters long, I can also use it in some places where 32-bit value is expected, for example in the "timestamp" field of PE header. This little tweak allows the PE version of fasmg to always assemble to exact same binary from the same source - just like all other OS ports. Another small detail that is nice to have.
Post 01 May 2020, 09:45
View user's profile Send private message Visit poster's website Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  


< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2024, Tomasz Grysztar. Also on GitHub, YouTube.

Website powered by rwasa.