Skip to content

Instantly share code, notes, and snippets.

Broccoli 1.0: What's New?

  • API future-proofed to allow for changes without breaking backwards compatibility
  • Temporary files now live in system-wide tmp dir (/tmp)
  • broccoli-sane-watcher pulled into core, now used by default
var helpers = require('broccoli-kitchen-sink-helpers')
var RSVP = require('rsvp')
module.exports = PollWatcher
RSVP.EventTarget.mixin(PollWatcher.prototype)
function PollWatcher(options) {
this.options = options || {}
if (this.options.interval == null) this.options.interval = 100
this.treeHash = null
diff --git a/velocity.js b/velocity.js
index c8b59e7..71ed48b 100644
--- a/velocity.js
+++ b/velocity.js
@@ -3365,7 +3365,7 @@ return function (global, window, document, undefined) {
if (timestamp) {
/* We ignore RAF's high resolution timestamp since it can be significantly offset when the browser is
under high stress; we opt for choppiness over allowing the browser to drop huge chunks of frames. */
- var timeCurrent = (new Date).getTime();
+ var timeCurrent = window.VELOCITY_TIME_FUNCTION(timestamp);
$ cd ~/.nvm && for commit in `git rev-list --first-parent --reverse v0.26.1..master`; do git checkout --quiet $commit && echo -n "$commit " && bash -c 'time . ~/.nvm/nvm.sh' 2>&1 | grep real; done
f34fef96d8ab3d7e6fba3574d122177de1140a88 real 0m0.062s
0181821b51609fe20ef72f8bf45523fe317be81a real 0m0.064s
0d898b0aa478cf86ea7afb6a733e8d2ff6ae75dd real 0m0.066s
0ef20199dcf6d4a21226a66cb8eccf23c6e16c7a real 0m0.064s
d4caf9fb670435a184a40242e6c215021187b46a real 0m0.065s
1e2a7a8de447c9b872fbf4cbe6c959cfc8d02a55 real 0m0.066s
c92effc6dabe8fc85252909e24ee49cbea89f3e7 real 0m0.068s
c9215a127feae213e9b09ca660f27801b0c52611 real 0m0.063s
014a44e15408ddcd6dc8c2ed9f781b2bfbd084d0 real 0m0.064s
Let a, b ∈ G, and let b be a right inverse of a, i.e. a*b = e.
Then we can show that b is also a left inverse of a:
b*a
=b*a*((b*a)*(b*a)^-1)
=((b*a)*(b*a))*(b*a)^-1 (by associativity)
=(b*(a*b)*a))*(b*a)^-1 (by associativity)
=(b*a)*(b*a)^-1 (by assumption)
=e
$ identify -verbose gamma-test-2.png
Image: gamma-test-2.png
Format: PNG (Portable Network Graphics)
Class: DirectClass
Geometry: 990x768+0+0
Resolution: 28.35x28.35
Print size: 34.9206x27.0899
Units: PixelsPerCentimeter
Type: TrueColorAlpha
Endianess: Undefined

Given an in-memory fs tree representation, we'll have functions to do the following:

  • read a directory on disk into a virtual fs tree
  • write a virtual fs tree to a directory on disk
    • also, apply an incremental update to an existing directory given an old and new fs tree
  • compute a diff between two virtual fs trees

When chaining an in-memory plugin to an on-disk plugin, or vice versa, a future Broccoli builder will automatically call these functions to translate back and forth.

Also, we'll add an in-memory mode to broccoli-plugin. When broccoli-plugin is used by an old Broccoli builder that doesn't support in-memory plugins, it will call these functions as well so that the builder sees files on disk.

// (I'm advocating for option -1, until we figure out the right solution,
// which is probably somewhere in the solution space of options 1/1a/2.)
// option -1: change nothing
// option 0: no inheritance, current proposal - breaks `class B extends A { }`,
// not really future-proof
// option 1: inheritance + just this incantation - ugliness for common case
class Router {
static build(stuff) {
// Compute compute
// var constructorArg = 123
return new Router(constructorArg)
}
new Router(constructorArg)
route(location) {