Friday, September 19, 2008

 

(Quick) status update

There has been no updates for quite a while now, so let's take a look at what's happening.

In the core functionality of MyNC, not much has changed. It's still a limited version of 5-axis wire EDM. I'm looking forward to implementing support for milling, but that's not at the top of my TODO list, since I've got no real-world application for it in the near future, and, most importantly, no one else interested in it has showed up so far.

Right now, I'm working on a parser for C++ to become able to write static source code checks. I was surprised to find that there's no decent general-purpose parser out there, so maybe this project has some moment. Writing one is no easy task, it's going to take quite a while. To me, it's like a vacation from MyNC development.

Just before that, I've upgraded MyNC communication middleware layer (myrelay) to support automatic code generation from IDL. The compiler is called 'relic'. It's different from other IDL compilers in that with myrelay+relic one can have a completely custom wire protocol while still having quite a lot of code generated automatically. And the simplicity, of course. MyConf update is on its way.

I had to switch several workstations lately, and at some point I've become tired of random problems with setting up development environment for MyNC and stuff. So I've invested some time in preparing a portable development framework. One can simply download it, unpack it, and then get right to work. It's called "Sovereign", the project's page is at http://sgn.sourceforge.net . The description is all there. In short, it just works.

I have also spent some time playing with GNU Modula-2 compiler to see if the older CNC system could be ported to Linux. And the answer is that yes, it could be ported, but who cares.

What else... Ah, yes, I've completed my diploma thesis and graduated from the university. So if you have any problems with information security these days, you know the number.

Some words on linux-rti-pf (home-grown patch for hard real-time in Linux). Two major things happened.

The first one is that the patch has bit-rotted to the state where porting it to the latest kernel version means an almost complete rewrite. The only major update I did so far (transition from 2.6.5 to 2.6.19) was mostly about rewriting from scratch too, and it took me about two weeks of (hard) work. I expect the next update, if one happens, to require a similar amount of time. The good news is that there's now a bunch of helpful virtualization hooks in the kernel, the bad news is that it looks like any externally maintained patch is going to bit-rot real quick anyway.

The second one is that I've found that I had no sensible idea of memory barriers at the time I was actively hacking on the patch. This means that in its current form it's not adequate for SMP, and that's just what I experienced while testing it (which included using the -rti kernel for my everyday work). It basically hanged somewhat twice a month on my dual-core machine, and worked just fine with SMP disabled. But now there's no doubt that I have all the necessary expertise to write a correct patch for SMP (fingers crossed).

Well, that's it for now. It's not like I'm spending 100% of my spare time on MyNC these days. It's time to get a life after the graduation, you know :) Good luck, and stay tuned.

This page is powered by Blogger. Isn't yours?