7.0.0 release in the morning

Windows – I got hold of an 8.1 eval, installed it (hour or two on a VM) and installed a trial 2013, copied that VM and then installed WDK 8.1 as well. Also copied my base fresh Windows 7 VM, installed VC 2012, copied that again and installed 8.0. Took a day or so, all told.

(Took me all of five minutes to write a script on Linux to build every variant and about ten minutes to run it. I’ve been watching “Yes, Minister” recently. Microsoft are the British Civil Service).

THEN found out ARM support exists in 2012.

Could not however figure out how to build an ARM library using 2013. Keeps telling me desktop apps not supported for ARM. Googling a lot didn’t help. Given up.

Building an ARM lib for the kernel with WDK 8.1 was straightforward. Will try it tomorrow with 2012.

So I pretty much know where I am. Will finish this in the morning and release, and then get on with polishing the docs, and then the next thing will be getting the benchmark app back into play.


Forgot to sort out the Linux kernel build. Done that.


What to to do about Windows?


I think I’m done with Linux build config.

I can’t build/test on x86 any more – Amazon no longer offer x86 machines, far as I can tell.

This leaves MS.

It’s looking like I need build files for both express and professional versions of every current Visual Studio, plus a second set for each of VS+WDK 8.0/8.1/10.0. These build files also are a screaming nightmare to produce. A billion different GUI switches which you have to click on and review – repeated each time for each build variant, which is debug/release, ARM/x86/x64, DLL/LIB, user-mode/kernel – twenty four variants – and I need to do this three times, for MS 2012, 2013 and 2015.

Microsoft, this is absolutely insane. I’m not even going to get angry because this is beyond anger. There are no words to describe how much of a problem this actually is, and this is the environment MS is offering *so people can write software on their platform*.

Windows 8.1


I’ve installed 8.1.

I’ve installed VS2013.

Know what?

I cannot work out how to start Visual Studio.



Test runs valgrind clean – almost no work to get back to clean, as I’d done this some time ago.

Added another test for the new ability to free queue elements.

Shortly going to run the full build and tests on linux x64, linux x86 and, hopefully, Android MIPS32.


Wrote a script which makes every build type and runs test for the debug and release builds.

This passes fully on ARM32 and MIPS32 (GCC and gnumake).

Downloaded a 90-day Windows 8.1 trial ISO and Visual Studio 2013 Professional (I’m hoping it will offer a trial install), and the 8.1 web installer (can’t find an ISO and just like ABN AMRo, THE worst bank in the world, every time I touch MS they mess something up, be it big or small – this time I’m told have to log in, to donwload – only in fact I did not have to do so).

I have to say, most profoundly, Microsoft have made the process of porting to their platform excruiatingly painful and above all TIME CONSUMING. It is SO MUCH HASSLE – and then, even once you’ve done it, there’s little scope for automation, since each WDK has to run in a different VM and I suspect now I may need to support three different WDKs, maybe even four to get Windows 10. It’s a joke. It’s totally insane and I boggle that MS have ended up offering this to developers.

On Linux, I wrote a script in about five mins which built and ran every variant.

Microsoft, it takes DAYS – that’s MULTPLE DAYS – to obtain, install and configure the build environments.

Anyways, ARM32 and MIPS32 are happy. Tomoz I’ll confirm x86 and x64 on Linux, which means all the Linux builds are in shape and ready to go.

Then it’ll be a case of deciding what to do about Windows and the MS problem.

I may for now just update the VS2012 and WDK 8.0 build files. This would mean no ARM32 support on Windows, because I need VS2013 (which means Windows 8.1) and WDK 8.1 to build for ARM. I can do those later – or I could try to do it tomorrow, install 8.1, etc.

I’ve also downloaded an Android image for the Ci20 (MIPS32)! it boots right from the SD card, so I should be able to check the library and test apps build okay on Android (even if it is MIPS and not ARM – Android for the Pi is apparently quite a bit more dicey).


Working on the Linux user-mode builds now.

Have a script which builds every variant and runs test for debug and release.

This script is running at this moment on ARM32 and MIPS32.

When they’re done, I’ll run on x86 and x64.

Once that’s done, Linux kernel-mode.

Looking into seeing if I can get hold of a Windows 8 ISO… *sigh*.

Microsoft and pure total mental agony

I hate Microsoft.

Working with MSVC is torture. Working with the web-site is torture.

It takes fucking forever to do anything and it’s either so much work to find out what you need to know, or you can’t find out at all.

So; I’m done with WDK 7.1 builds, now I’m looking at the MSVC builds.

I want to support an ARM build. First question; what’s the earlier version of MSVC which supports ARM? I can’t find out.

It looks like it’s probably MSVC 2013, given what people have posted on various forums (!)

I go to download 2013.


There are three “express” versions, which I think from prior knowledge are the free versions, and five non-express versions, such as “premium”, “ultimate” and “professional”.

Anyone have any ideas about the difference between premium, ultimate and professional? ’cause there’s fuck all on the download page.

Next question – I know already that the WDK 8.0 will only work with the professional version of 2012.

Is this still the case with 8.1 and 2013? I can’t find out.

Next question – will solution files made with a non-express version load into an express version? I can’t find out.

Next question – which versions of Windows are supported by the different WDKs? I can’t find out, in part because on the download page for WDKs, the link in each WDK’s section, which should according to the text go to the page about that WDK and tell you, in fact ALL go to the WDK 10 download page.

Every time MS ditch a WDK but it is the only WDK for a given OS, I have another platform to maintain – another Window VM with it’s own MSVC and WDK install and it’s own build files. I don’t have this problem on Linux, because there it’s just a matter of having the correct version of GCC and header files.

I hate Microsoft. Working with their tools is pure bloody torture – and I’ve not even spoken here about THE OBSCENE MENTAL TORTURE OF MSVC SOLUTION FILE CONFIGURATION. If it was’t for the fact I want to support people using this platformm, I wouldn’t touch it with a fucking barge pole, in exactly the same way as I wouldn’t stab myself in the eyes with forks, because, you know, IT HURTS.

Addendum – it gets worse. I have just discovered – not on the MS site, or the download page for it which makes no mention of this at all, but on the wikipedia – that 2013 requires Windows 8.1. I am not happy. I have by pure luck avoided wasting quite a bit o effort downloading the installer, setting up a W7 VM and trying to install. I do not appreciate my time being wasted by gross incompetence.

I’m impressed

I’ve been working on getting the build files up to date.

I’ve been working thi morning on the WDK 7.1 build.

I’ve made it compile for ARM and IA64 – i.e. sorted out the porting abstraction layers for these processors, which is really nice.

However, the IA64 build was failing to compile – claimed unreachable code in the ringbuffer init.

I’ve just figured out why – and I’m impressed by the compiler.

IA64 does not support DWCAS. As such, the dummy DWCAS macro is in use. The macro takes an argument, result, which normally is set to 1 or 0, but in the dummy macro, is simply set to itself to remove a compiler warning.

The ringbuffer init, inits and then pushes elements to a freelist. The lfds700_freelist_push() function calls the DWCAS macro, from the inside of a loop, where the loop only ends if result is set to 1.

The compiler noticed result would never be set to 1, and was calling – rightly – unreachable code in the ringbuffer init function!