Domenico Andreoli, the Debian curl and libcurl maintainer posted to the curl-library list about the recent libcurl soname bump and the related issue of ABI breakage.
I responded, explaining my view on why the soname bump from 3 to 4 was valid, but I've also gone back in my mail archives and checked out a private discussion I had with Bjorn Reese over this subject a long time ago and I feel it is about time it hits the air.
An ABI breakage occurs when one or more of the following changes are made
- Change function names
- Remove existing functions
- Change parameters
- Change behavior
- Change undefined behavior
- Add dependence on other functions (e.g. A() must be called before B())
- Change the order of elements
- Add elements
- Remove elements
- Change the data type or size
- Change alignment
- Change element values (e.g. change bits in flag variables)
- Change variable names or types
- Remove variables
Update: Dan Fandrich posted on the curl-library list and mentioned Mike Hearn's great related page: Writing shared libraries.
As Austin Appel posted on the Rockbox mailing list (early this morning, euro time), Rockbox now runs on the SanDisk Sansa e200R models.
In the end, it shows there really isn't much difference between the two e200 versions. The Rhapsody models have a modified USB stack somehow that makes it hide the second "hidden" partition in which the bootloader and system software (mi4) is stored.
The Rhapsody bootloader doesn't allow bootloader updates, and it also actually verifies the digital signature in the mi4 files, so in order to allow Rockbox we have to do a rather funny work-around: use e200tool to make it start the plain e200 bootloader and use that bootloaders recovery mode to upload a binary-patched version of the Rhapsody bootloader. The patched version puts back the old flawed signature check from the vanilla e200 series.
When the old broken BL signature check is in place, we can "upgrade" the target using the normal means and just put a Rockbox bootloader mi4 and the Sansa will then nicely load and run that.
The Free Software Conference Scandinavia will be held at ITUniversitetet in Gothenburg, 7-8 December 2007.
I'm invited to do a talk there and so I plan. The fscons site that's supposed to cover this event seems to remain inaccessible though...
The subject? curl - but I haven't yet written the description for it so I'll present that later on.
Given the recent e250R i2c rom dump, MrH brought an analysis of what the rom actually contains and it is indeed the pre-bootloader code that loads the bootloader from the NAND flash and starts it. The perhaps most interesting part is that the e250R's i2c rom dump is identical to the vanilla e280 one we have... meaning that they both load the bootloader the same way!
So here's MrH's suggested steps (keyed in on the wiki page by me) to convert your R model Sansa to make it capable of loading and starting the Rockbox bootloader.
I have a fairly new phone, the Sony Ericsson w580i and I think it is a neat little thing.
I've been using it as a usb-storage device at home under Linux without any problems, and I've pretty much filled my extra 4GB M2 card with music from my collection.
Today I decided to try to get a picture from my phone to my work PC (which is running... eh, Windows XP) and guess if I'm up to a shock: it doesn't talk to the phone. It claims it can't find any drivers for it and for some reason it doesn't just go for usb-storage (even though we know now that it is OHCI compatible - at least).
Crap. On the Sony Ericsson site they offer the Sony Ericsson PC Suite 2.10.38 (for Windows Vista/XP) which is a whopping 44.8 megabytes! And all I want is to access my phone as UMS. Grrrr.
Once installed, I can access the phone fine but now I get that bonus popup annoyance windows that repeatedly asks me if I want to reboot the computer so that the new stuff can take effect...
kerneltrap writes an interesting piece about how some Linux kernel developers wants to remove the BSD parts of the dual-license that appears in several files (and thus keep only the GPL-part) that are kind of co-developed with parts of the BSD community. Complete with lots of Theo de Raadt quotes. Spoiler: no, they're not allowed to do so.
This was covered on slashdot.
Mark Arigo announced his successful port of Rockbox to the Sandisk Sansa c200 series, and following those footsteps MrH brought mi4code 1.0.1 with built-in keys for the most recent c200 firmwares.
While on the subject of mi4 based players: If you are the owner of a Sandisk Sansa e200R model, please help us out a bit by running e200tool on your target and get a dump of the i2c rom for us!
(Update: we got a dump, thanks. No need for more at this point.)
I noticed curl on Fedora suddenly started using NSS for TLS/SSL, as I believe the first distro out there.
I've been under the impression that Debian is the only distro shipping it built with GnuTLS.
I must admit I enjoy seeing more use of curl's wide support of various underlying technologies, and it also makes it more certain that they will remain working and even get improved as we go. When we add support for things and they never really end up getting used those features just risk serious bitrotting and slowly dying away when the code changes but nobody uses them.
We enter feature-freeze on August 31 and we then fix remaining known issues for a week or two in September before we release 7.17.0.
The version number bump is this time mostly due to the new way of dealing with LDAP (being linked properly build-time instead of dlopening run-time like before) and the new LDAPS support. 7.17.0 also brings a brand new port to OS/400, it treats strings sent to curl_easy_setopt() differently and it builds and runs with recent libssh2 versions - that lib changed so much recently so that libcurl 7.16.4 can't be built with libssh2 0.16 or later.
I am starting my paternity leave on October 1st to take care of Rex full-time, and I'm not sure at this point in time how much that'll affect how much time and energy I'll have for curl hacking, at least initially, so getting the curl release done before this seems like a good idea to me.
Edit: I should clarify that the "treats strings differently" means that libcurl will copy the strings passed to it, so that applications no longer need to keep them around until libcurl is done with them like they have been forced to up until < 7.17.0.
MrH mailed me the latest version of mi4code that now incorporates proper support for the recent Sansa 1.03.07 firmware (claimed to be beta, only available from some unofficial sansa fan sites, such as anythingbutipod.com), and I've uploaded it to the mi4code page.
Note that we still don't advice anyone to actually use the unofficial 1.03 version as it has been reported to be bad in several aspects, such as the removal of MSC mode!