[webkit-dev] Fwd: Port WebKit to GNUstep

Daniel Ferreira (theiostream) bnmvco at gmail.com
Thu May 11 19:54:26 PDT 2017


Hi there,

My name is Daniel Ferreira and as a Google Summer of Code project I
decided to tackle the ten-year-long[1] effort of porting WebKit to
GNUstep one more time (and hopefully get somewhere this time).

Since 2009, GNUstep has gained a lot of maturity in its graphics stack
and on its implementation of CoreFoundation, so now having a WebKit
port in it seems like a more plausible goal – as well as a fun
challenge. This is very important to GS since it still has no web
browser running on top of it.

Also since 2009, it seems like WebKit has gained mature ports on GTK
and Qt, which has made the demand for a GNUstep port quite smaller for
the project. However, it does seem interesting to offer a
cross-platform port that adds portability to a lot of currently
Mac-specific code – a goal a GNUstep port would fulfill.

In an ideal world, GNUstep would be mature enough for us to build the
Mac port on a Linux machine pointing to GNUstep libraries and all
would be well. Sadly, this is not the case and a GNUstep port on
WebKit would require some adjustments on WebKit (although GNUstep
certainly would receive many patches as well implementing stuff WebKit
would use).

That being said, I decided to try compiling WTF as a first approach to
this undertaking, and I introduced a "PlatformGNUstep.cmake" file that
is mostly a copy of PlatformMac.cmake. It ends up defining
WTF_PLATFORM_MAC and WTF_PLATFORM_GNUSTEP as code macros, and whenever
there is some Mac-specific code that GNUstep can't tackle, we try a
cross-platform alternative. Otherwise, the behavior is just like that
of the Mac port.

Through some adjustments to WebKit code (e.g. GNUstep does not support
XPC, QOS, Mach kernel memory operations, so in these cases we either
do nothing or use Linux-specific code as an implementation) and
GNUstep adjustments (regarding some missing CoreFoundation functions),
I managed to get WTF compiled and linked. I'm now moving on to
JavaScriptCore to be able to test everything (and very likely spend
quite some time figuring out the most diverse issues that will show
up).

That being said, I will send a patch as soon as I get JSC in a
semi-decent state. However I wondered if this introduce new platform +
do the same thing as Mac port with some exceptions approach seems
reasonable to the project now that I have realized it is actually
feasible.

Thanks,
-- Daniel.

[1]: https://lists.webkit.org/pipermail/webkit-dev/2009-October/010333.html


More information about the webkit-dev mailing list