[fpc-devel] FPC + Haiku: how good is it?
memson.lists at googlemail.com
Wed May 12 12:34:20 CEST 2010
Graeme Geldenhuys wrote:
It's not often I get to actually have knowledge to give!
> Anyway, I saw that FPC 2.4.0 has a Haiku release (I was quite surprised -
> kudos to the FPC developers!).
FPC supported BeOS since FPC 2.0. I believe the first port was by Pavel
Kasselberger (sp?) for his Pixel image editor. I used to be involved in
the effort to port some kind of API mapping, so I can give a little info.
> How mature/stable is FPC on Haiku? Is it
> usable, or is it still very experimental?
The BeAPI (the API that Haiku has inherited) is C++ based and *heavily*
multithreaded. As such, it is (was) pretty laborious to get any GUI apps
working. I wrote some simple wrappers, which worked okay. They are
probably still available in the Be FPC Source Forge repo. The other guys
on the project started to write a real API wrapper, and at that point I
sort of dropped out of the loop, so I'm unsure exactly how far they got.
I remember the API having a lot of circular dependencies and modelling
it in the same way as the BeAPI layed out files was pretty impossible.
That was the last I spoke to them.
Your biggest issue is not C++, it is multithreading. In BeOS, every app
has a thread (as normal) and every window has a separate Thread
(actually, more than one, as there is one or more in the app_server for
every one in the executable, but at the simplest level, the one per
window is fairly accurate.) BeOS used B as a prefix, much like
Borland's T. So you get a BLooper (a "thread"), then BMessenger
(Postbox/message sender) and BHandler (a "message" handler), a BWindow
inherits from both (IIRC) and IPC is done via an object based system
comprising of BMessages that contain lists of values (basic data types,
instances of class/structures, pointers etc.) The whole system is
extremely client/server. Sending a message between two applications is
trivial. This is all pretty easy to wrap with a little thought. However,
some controls need to be created in the right thread context, so it
starts getting messy.
Anyway, I'm working on 10 year old information, but Haiku is modelled
very much after the original BeOS. Mind you, Haiku now has a QT 4.x
port, so you might find that is simpler to get going?
More information about the fpc-devel