https://github.com/ehanley324/layout-instability/blob/master/explainer.md
#!/bin/bash | |
# Init. | |
if [ "$1" == "--silent-fail" ]; then | |
SILENT_FAIL=true | |
else | |
SILENT_FAIL=false | |
fi | |
ACCESS_TOKEN="[REDACTED]" |
//add this to a bookmark link field, and use it to collect try failures from a domain such as | |
// https://treeherder.mozilla.org/testview.html?repo=try&revision=a1372c8e3c8a4c3ecbda2ff84f7ea306fb95c1d7 | |
// it will output the collected tests into the console! | |
javascript:%20(function()%20{%20var%20testNodes%20=%20document.querySelectorAll(".test");%20var%20failingTests%20=%20"";%20for%20(let%20testNode%20of%20testNodes)%20{%20%20%20failingTests%20+=%20testNode.textContent.trim()%20+"%20";%20}%20console.log(failingTests.trim())})() |
How do you send information between clients and servers? What format should that information be in? What happens when the server changes the format, but the client has not been updated yet? What happens when the server changes the format, but the database cannot be updated?
These are difficult questions. It is not just about picking a format, but rather picking a format that can evolve as your application evolves.
By now there are many approaches to communicating between client and server. These approaches tend to be known within specific companies and language communities, but the techniques do not cross borders. I will outline JSON, ProtoBuf, and GraphQL here so we can learn from them all.
Konark Modi, Alex Catarineu, Philipp Claßen and Josep M. Pujol at Cliqz *München, October 2016
[edited on October 2017]*
[edited on September 2019 to fix broken links and add reference to HPN paper]*
We recommend to read the article on Cliqz Tech blog, the content is more up to date there. Not removing this gist for historical reasons. December 2019.
Now that Gecko uses Servo's parallel style system, we want to work outward from there. The next phase could be parallel frame construction, and after that, parallel layout using Servo layout code.
We want to ship this work incrementally (every six weeks), without needing to replace the entire layout system at once. There are a few ways we can convert
EDIT November 2017: recently the target wasm32-unknown-unknown
was added to rustc
which uses the LLVM WASM backend and works without Emscripten. This is now the recommended way of generating WASM code from Rust (as it is much easier). Thus, this gist document is pretty much useless now. A great resource on getting started with WASM and Rust is hellorust.com: Setup and Minimal Example.
Using KLEE on the DARPA CGC challenge binaries (as ported to Linux/OS X by Trail of Bits) is currently not a fun time. Here are a few of the current obstacles.
I'm working off of KLEE master, built against LLVM 3.4, running on Linux (Ubuntu 16.04). Some of this may be easier or harder on other platforms supported by cb-multios (i.e. OS X and maybe someday Windows).
- KLEE wants a standard
int main(int argc, char *argv[])
. Most of the challenges instead haveint main(void)
instead, and some, perversely, use the first int argument to main to hold the address of the flag page. (Edit: this has been fixed in thewindows_support
branch ofcb-multios
and should make its way into master soon) - The challenge binaries use lots of symbols that conflict with things in libc. For example, many of them define the symbol
stdin
and then implement a FILE* struct themselves. So when trying to link inklee-uclibc.bc
you get symbol clashes. This already has an [
FROM ubuntu:trusty | |
# Install Firefox build dependencies. | |
# Packages are from https://dxr.mozilla.org/mozilla-central/source/python/mozboot/mozboot/debian.py | |
RUN sudo apt-get update -q \ | |
&& sudo apt-get upgrade -qy \ | |
&& sudo apt-get install -qy \ | |
autoconf2.13 \ | |
build-essential \ |
Language | Adding files from filesystem to the build | How? | Unfinished files break the program? |
---|---|---|---|
Rust | Explicit mod |
declaration | No |
CommonJS | Explicit require |
import | No |
ES6 | Explicit import |
import | No |
Python | Explicit import |
import | No |
Lua (new) | Explicit require |
import | No |
PHP | Explicit require or use via autoload |
import or any use | No |
Perl | Explicit use |
import | No |