Changes between Initial Version and Version 1 of URLsCMakeNetworking2016


Ignore:
Timestamp:
Oct 27, 2016 1:44:37 PM (5 years ago)
Author:
Jon Davis
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • URLsCMakeNetworking2016

    v1 v1  
     1= URLs, CMake, and Networking =
     2
     3Alex 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