| | 1 | = URLs, CMake, and Networking = |
| | 2 | |
| | 3 | Alex Christensen, Apple |
| | 4 | |
| | 5 | == URLs == |
| | 6 | |
| | 7 | - guy in Netherlands who is trying to unify URL standard across all browsers |
| | 8 | - implemented spec inside WebKit |
| | 9 | - mostly a good idea |
| | 10 | - currently passing 2/3 of tests |
| | 11 | - most browsers pass at least that amount (but of different tests) |
| | 12 | - there are open issues (not perfect) |
| | 13 | - e.g. how to deal with unicode fragments |
| | 14 | - the spec is changing |
| | 15 | - implementation uses finite state machine to look at the string |
| | 16 | - zero allocations in one pass |
| | 17 | - certain characters (tab, newline, etc.) should be ignored |
| | 18 | - input can be any sequence of unicode |
| | 19 | - output *should* be ascii |
| | 20 | - %2E is sometimes a `.` (depending on the server) |
| | 21 | - ~1000 unit tests for a bunch of weird URLs |
| | 22 | - `http://127.0.0.-/` should be invalid |
| | 23 | - modifies DOMURL and urls everywhere |
| | 24 | - interfaces with NSURL, etc. |
| | 25 | - ~25% faster than old parser |
| | 26 | - blog post coming soon :) |
| | 27 | - unfortunately, there is always someone with “old” spec |
| | 28 | - should communicate to web authors |
| | 29 | - typically, authors don’t use weird edge cases |
| | 30 | - but, WebKit apps may implicitly assume some of these “old” points |
| | 31 | - e.g. not having the second `/` after scheme |
| | 32 | - as such, we cannot delete the old parser (for now) |
| | 33 | - currently on by default, but only for Desktop and Mobile Safari |
| | 34 | - these changes effect URL components as well |
| | 35 | - e.g. changes to query or path via JS |
| | 36 | |
| | 37 | == CMake == |
| | 38 | |
| | 39 | - works everywhere except on Mac using WebKit2 |
| | 40 | - slightly different directory structure with CMake |
| | 41 | - >30% build time improvement compared to XCode |
| | 42 | - we also have a bot for this |
| | 43 | - `build webkit --cmake` |
| | 44 | - preprocessing of IDLs must be done |
| | 45 | |
| | 46 | == Networking == |
| | 47 | |
| | 48 | - `ResourceHandle` class, designed for networking in 2001 |
| | 49 | - contains a `ResourceHandleClient` that has information about the networking |
| | 50 | - functions have been added with `Async` for WebKit2, that doesn’t use the synchronous model of networking |
| | 51 | - will be changing the logic of all network code to remove synchronous methods |
| | 52 | - all code will now be asynchronous |
| | 53 | - will replace `Network*` instead of `ResourceHandle*` as the completion handler |
| | 54 | - designed to be more asynchronous |