Hi 4tH-ers!
You haven't heard from me for along time, so let me explain what I've been doing alls this time.
You know I have been working for a LONG time on a humble Banana Pi M3. September last year I've gotten my brand new machine. In the old times I would have installed it up to the point where I essentially got most of my old machine back.
Unfortunately, that goes with a lot of stress, so I rarely expose myself to that. My work is stressing enough and I need my time to recuperate. I'll be 61 this year, in a few years 4tH will hit its 30th anniversary, so you can imagine I'm not the young god I used to be.
That means, most time I do during vacations, when I'm well rested and have few things that require my attention. I got my machine with Ubuntu 20.04 preinstalled, so my first attention was to restore the functionality of the Banana - since that is the setup I need for work. Which is particularly important in these times.
I wanted to restore my files from the 12 years old disks from my old machine. They're nicely located in a few USB enclosures, but 12 years - you never know what happens when you expose them to a long and intense workload. So I put that off.
The Xmas vacation I spend on restoring the monitoring capacity of my Raspi Pi B, which involved hooking it up to my old VGA monitor.
This vacation I've spend on restoring over a MILLION files of my old machine. I already got a few X-compilers working as well. My old development environment for packaging is restored as well. Yesterday I spend a whole day on configuring my old account.
Since it is stored on a different, unpartitioned disk, I had some(!) trouble with getting SNAP packages to work. They don't work over a symbolic link, so I had to remount the disk under /home/users. Then I had to add the directory under /etc/apparmor.d/tunables/home.
Finally, finally it worked. Except for the keyboard in graphical apps. This was due to an ibus conflict, which had to be fixed by setting it to a different value in the MATE control center. I was exhausted after that, I must admit. In the end, it seems so simple and if I'd had that solution, it would have been fixed in 15 mins.
Next, I've tackled a thing in FOOS. The constructor was defined in a much different way from all other methods and that didn't do. So, I've defined a :NEW method. It is defined much like the :DELETE method, but uses a completely different technique. Note you can STILL use the "old" method as well.
The only restriction is that IF you use the new method, you MUST use curly braces. Other methods allow you to handle the object address yourself, but I must admit, I hardly ever do, so I can safely assume others won't as well. It takes away the abstraction and is a lot of hassle.
It requires some more testing, but I'm pretty confident it works just fine. Your class definitions get a lot less quirky look:
:class CarBuilder
extends ICarBuilder
field: _Car_
end-extends {
:new { new Car this -> _Car_ ! } ;method
:virtual SetColor { this -> _Car_ @ => Color! } ;method
:virtual SetWheels { this -> _Car_ @ => Wheels! } ;method
:virtual Result@ { this -> _Car_ @ } ;method
:delete { this -> _Car_ @ delete } ;method
}
private{ _Car_ }
;class
It works like replicating the address on the returnstack, so the braces can do their job. Of course, it requires an extra address on the stack, but if you're this much stack space, I guess you're in trouble already.
You may also note I've added a few odd routines. I did a 64 bit version of KISS, since otherwise you wouldn't have a high performance randomizer on you 64 bit machine.
Second, I've written a few routines I need to implement a lean version of ZIP. Without that one, formats like .XLSX are impossible, since these require ZIP. I can only tell you that the one posted on a Forth site won't do. These produce files which are so mangled that most ZIPers barf them out - so I gotta do this myself. I don't expect to include these in the current version, it's just a new project.
Having back my staging area means I can now start releasing stuff. Like I said before, it won't be all platforms at once. It'll be a few major ones and them some added bit by bit.
So, now you know where I'm at. Comments welcome.
Hans Bezemer