TL;DR:

All my computers have died except one very slow one
but I'm still with it and the next micro release candidates
14.4.4 and 14.5.1 will happen on the 18th Feb all the same.

On May 18th, as well as 14.6.0 with new features, there will
also be 15.0.0 for changes that may not produce exactly
the same output as before but nothing really major.
Just a number.

:RD;LT

That was fun. Three days ago the electric company here
put an incredible voltage on the consumer network at 6am
so I woke up to loud sawtooth buzzing, cracking sounds
in the masonry and a smell of electrical burning. Twice.
I thought for a moment that the building was about to collapse.
After the second one, the in-wall parts of the old electrics
made the lifesaver (earth leakage or overcurrent circuit breaker)
trip so I was in the dark. I spent a morning being an electrician,
disconnecting different parts of the wiring until it would stay on,
and found that most of the light bulbs were dead, also power supplies,
both audio amplifiers and the two 4GB 2x2700MHz desktops I use.

Hoping it was had just blown the PSU fuses, I soldered new ones in.
Nope. as soon as the plug was put in, a green flash inside the PSU
and another blackened fuse. Both of them. I dunno if the motherboards
survived, probably not as they're delicate, but I can't test because
these HPs have a funny PSU with no 24-pin molex, just a 2x2 12V one,
a 3x2 one with funny-colored wires and a thin 1x6, probably PSU control.

The only survivor was a 512MB 686 whose power lead was not plugged in,
the one with an IDE disk that I use to install Minix, Haiku, Windows
or anything else the GCC Compile Farm doesn't have. Fortunately, the
disks of the main two booted fine on it and recognized different hardware.

By golly, it's slow. Firefox or Chrome take ages to get into the air
and, when either are up, it swaps between 500 and 2000 pages per second.
Think before you click anything as it may take a minute to notice!
It now has four swap partitions with equal priority on disks
recovered from the wreckage, so it crawls a bit more energetically.

Having only 512MB RAM and working from the command line I found that
the sox_ng test suite hung forever at the "spectrogram -x" test
making the machine thrash and have a seizure; only 256x256
spectrograms were possible.

The cause? It calculates the spectrogram column by column but
has to write the PNG file row by row, so whichever way round
you put a square array of pixel values, as columns or as rows,
one or the other accesses the array "across the grain",
making it keep all the pages swapped in all the time.

Last night I pulled out an old trick from the 80s, the days of
VAXen with 4MB, to rotate a raster image in RAM: instead of
a row-by-row or column-by-column array, map x/y into the array
in a way that makes each page of virtual memory (4KB) cover
a square tile of the image. That way, when writing to it
in one direction or when reading from it in the other,
it only needs one row or column of tiles to be in RAM and
completes in a few seconds, which means that spectrograms
can be made that are bigger than the physical RAM,
great for anyone hobbling on an old computer.

Not a problem for those with 256GB of RAM, of course,
but it will now work now on a 386, so an apparent disaster
has made SoX work better for people with crap hardware so
here's rooting for the little guys, and
"No evil comes to harm us" as they say here.

The electric people were on the spot in minutes, crawling up ladders
in the street and their boss told me I can replace anything damaged,
send the invoice to my electricity supplier (ENEL) and be reimbursed.
We shall see if that works out or not.

For the moment then, bang on the days in which I have to make a release,
I'm appreciating the frugality of the command line and all that stuff
to have the wiki and bugs accessible locally without web browsers
so I should still be on time with the release candidates on Feb 18th.

On May 18th instead, the next minor release with people's new features,
there will also be the first major release, 15.0.0 and we can break things,
something I've been shy of until a few days ago when I was enlightened.
There are too many desirable changes that don't work exactly as before,
which strictly speaking includes fixing broken effects, even though
a few of the more extreme ones have already gone into 14.5.0.

"Major release" sounds scary but there's nothing major. It's just what
the first number means in semantic versioning: that some things'
output may not be byte-for-byte the same as before, which is probably
why GCC is now 12.*, having lingered at 2.* and 3.* for years,
and Firefox at 128.*. The input syntax will work as it always has.

This decision is a great relief for me from all that anxiety
about breaking other people's existing work by remote control
and it opens the door to several other things I've been reluctant
to include for that reason. I'm not looking forward to filtering
hundreds of commits onto micro, minor and major branches but
it seems the best way forward.

Onward

    M



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#44): https://groups.io/g/sox-ng/message/44
Mute This Topic: https://groups.io/mt/111208579/21656
Group Owner: [email protected]
Unsubscribe: https://groups.io/g/sox-ng/leave/13602885/21656/313486934/xyzzy 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to