1,689 karma · joined August 21, 2008
Contact me at mrowe@bdash.net.nz.
The Chromium Embedded Framework (http://en.wikipedia.org/wiki/Chromium_Embedded_Framework) isn't too far from that. I'm not sure if Opera is using this project in particular, but they do mention using Chromium.
[1]: https://lists.webkit.org/pipermail/webkit-dev/2013-February/...
> Webkit takes a very different approach, and very intentionally. They believe it's better to keep the text invisible until the font is ready. This way, there is no moment where the text flashes into its newly upgraded self.
Google Chrome, the subject of the original linked post, is built in WebKit and thus inherits this behavior.
While the ex-Nokia developers I've met have all been excellent engineers, they certainly didn't port WebKit to their mobile devices in under a week. June 7, 2005 marks the date that Apple started WebKit as an open source project. That is, on that date the CVS repository and Bugzilla instance were made publicly available. For over two years prior to that point Apple had been publishing the source code of the two main components of WebKit, JavaScriptCore and WebCore, alongside Safari releases. Nokia's port of WebKit to Symbian was based on those releases, and it wasn't until late 2006[1] that Nokia started developing against the current WebKit SVN repository.
Edit: If you can't see any difference between the approach to standards taken by Microsoft with IE 6 and by the people involved with WebKit, I'd suggest reevaulating your own biases.
[1]: http://www.breaknenter.org/2012/02/adventures-with-daisy-in-...
Pages that use scroll event handlers, however, place limits on what browsers can do to improve scrolling performance. Scroll events have to be interleaved with the painting that occurs during a scroll, otherwise any movement of onscreen elements that the event handler performs will appear out of sync with respect to the rest of the scrolling. The single threaded nature of JavaScript in web pages means that this event delivery requires bypassing the multithreading scrolling optimisation I mentioned above. Reducing, or preferably eleminating, these event handlers can result in dramatically smoother scrolling. Improvements to web technologies have been proposed in order to aid this. For instance, scroll events are often seen implementing headers that are in the flow of the page and then stick to the top of the viewport as the user scrolls downwards. "position: sticky", a means of achieving this effect without JavaScript, was recently proposed on the CSS standards mailing list [1] in order to help future developers unintentionally causing their pages to scroll in a jittery manner.
[1] http://lists.w3.org/Archives/Public/www-style/2012Jun/0627.h...
The patch to Python involves guarding every increment and decrement of a reference count with a single pthread mutex. This pthread mutex would become a major source of contention if multiple threads are attempting operations that manipulate the reference count. Pthread mutexes are also a relatively heavyweight synchronization mechanism, and their overhead would impact performance even when the single mutex was uncontended.
In contrast, Objective-C uses more efficient means of managing the reference count. The implementation of -[NSObject retain] uses spinlocks to guard the side tables that hold the reference counts. There are multiple such side tables and associated spinlocks in order to reduce contention if multiple threads are attempting to manipulate the reference counts of different objects. CoreFoundation, which provide the implementations of many common types such as strings and arrays, uses an inline reference count that is manipulated using an atomic compare-and-swap operations. This reduces contention at the cost of increasing the storage size of every object of this type.
These sorts of temporary issues aren't that a big deal if it's in a separate application that you use only for testing, but they're a darn sight more painful when you replace your system WebKit frameworks and they start impacting things like your email client or the system installer stack.
If for some reason you need to use the frameworks from a WebKit nightly with your application, use DYLD_FRAMEWORK_PATH to point your app at the WebKit nightly's frameworks. This has the same benefit without any of the downsides mentioned above.