Skip to content

Instantly share code, notes, and snippets.

View tobie's full-sized avatar

Tobie Langel tobie

View GitHub Profile
@tobie
tobie / latency.txt
Created May 31, 2012 08:43 — forked from jboner/latency.txt
Latency numbers every programmer should know
ns
L1 cache reference .......................... 0.5
Branch mispredict ........................... 5
L2 cache reference .......................... 7
Mutex lock/unlock .......................... 25
Main memory reference ..................... 100
Compress 1K bytes with Zippy ............ 3,000
Send 2K bytes over 1 Gbps network ...... 20,000
Read 1 MB sequentially from memory .... 250,000
Round trip within same datacenter ..... 500,000
Primarily by grouping types into larger categories, but also by recategorizing callback interfaces as more like dictionaries than normal interfaces.
Fixes #50 and #59.
<!--
This comment and the below content is programatically generated.
You may add a comma-separated list of anchors you'd like a
direct link to below (e.g. #idl-serializers, #idl-sequence):
#dfn-distinguishable
Fixes https://www.w3.org/Bugs/Public/show_bug.cgi?id=29450.
<!--
This comment and the below content is programatically generated.
You may add a comma-separated list of anchors you'd like a
direct link to below (e.g. #idl-serializers, #idl-sequence):
Don't remove this comment or modify anything below this line.
-->
@tobie
tobie / notes.md
Created July 20, 2018 05:39 — forked from calebamiles/notes.md
Notes on Open Source Governance Models

Node.js Foundation

  • Healthy Open Source
    • explicit goal to be a lightweight process
    • concrete ability to scale to hundreds of contributors
    • good fundamental goals
      • transparency
      • participation
      • efficacy
    • ecosystem projects encouraged but not required to adopt foundation governance templates
  • creation of projects under TSC explicity delegates authority from TSC to project TC
const Grammar = require('syntax-cli').Grammar;
const LLParsingTable = require('syntax-cli').LLParsingTable;
const jsdom = require("jsdom");
function getRulesFromDOM(window) {
let rules = window.document.querySelectorAll("pre.grammar[id]");
return [].map.call(rules, pre => pre.textContent);
}
const REGEXP = /(\s*:\n\s*)|\b(integer|float|identifier|string|whitespace|comment|other)\b|(\s*\n\s*)|(ε)/g;
[Exposed=Window,
NoInterfaceObject]
interface WindowSessionStorage {
readonly attribute Storage sessionStorage;
};
Window implements WindowSessionStorage;
@tobie
tobie / Inheriting "Mixins"
Last active August 29, 2017 22:24
WebIDL Mixins
# Here we're looking for NoInterfaceObjects that have a base class.
# Luckily the only one we could find is not used as a mixin.
# awk '/NoInterfaceObject/,/};/' *.webidl | grep -o "interface .*:.* {" | cut -d" " -f4 | sort -u
BoxObject
[NoInterfaceObject, Exposed=(Window,Worker)] // seems redundant
interface GlobalCrypto {
[Throws] readonly attribute Crypto crypto;
};
Window implements GlobalCrypto;
WorkerGlobalScope implements GlobalCrypto;
function traverse_inherited_and_consequential_interfaces(stack, callback) {
var I = stack.pop();
callback(I);
I.array["implements"][I.name].forEach(id => {
var mixin = I.array.members[id];
if (!mixin) {
throw new Error("Interface " + id + " not found (implemented by " + I.name + ")");
}
var interfaces = mixin.get_inheritance_stack();
traverse_inherited_and_consequential_interfaces(interfaces, callback);
parsed_idl.members.forEach(function(member) {
this.members[parsed_idl.name].members.push(
new IdlInterfaceMember(member)
);
}.bind(this));