This started causing test failures in deployed tests while testing the 0.4.1
release candidate; we think this may be related to bumping the mongodb node
driver version. (Maybe the change to this.poolSize in
f81870f7da
?)
This reverts commit 6121400983.
We will solve this by deleting distracting versions of fibers.node rather than
by working around them. This will fix rpmbuild as well.
Meteor will use jQuery for selector matching if it's present on the
client (which at the moment is always), but it now will use bare
querySelectorAll on modern browsers and IE 8+ if there is no jQuery.
There is no other dependence on jQuery in Meteor.
For now, the old names still work as well.
This includes:
- Meteor.isServer/isClient
- this.isSimulation in methods
- Context.onInvalidate
- Meteor.status().retryCount/retryTime
Remove old backwards-compatibility "Sky" alias for "Meteor".
Update all examples in the docs to use camelCase.
Delete unused docs/client/projects.html file.
To test whether an element in the event bubbling chain matches a
selector, we now modify the selector to include an ID for the
element in question (which we assign if it doesn't have one),
so we search for one node rather than listing and checking all
nodes that match the selector! This makes a huge speed difference in
the jsparse demo, which binds a global handler over a big DOM tree.
The new domutils are matchesSelector(element, contextNode, selector)
and matchesSelectorClipped(element, contextNode, selector, clipStart,
clipEnd).
Note: Eventually make the args more like this W3C working draft:
http://www.w3.org/TR/selectors-api2/#matches
This isn't the kind of dynamic var that should
persist into timer callbacks, it should just be
on the stack. Also cuts dependence of spark
on dynamics.
This is a carefully considered change motivated by Tinytest, which
fires timers from a method and then waits for them before returning.
Because the timer callbacks didn't have a WriteFence, we had a race
condition a while back where the test client would quiesce before all
the results came in, which I fixed by giving Tinytest its own timer
functions that kept the environment, including the WriteFence.
I want to tear these special timer functions out now, since they are
necessary (before this commit) for very obscure reasons. The race
condition is hard to reproduce and is affected by Mongo latency, the
order of the unit tests, etc. (I reproduced it semi-stably to test
this commit, and it was tricky.)
The change is to give timer callbacks the WriteFence and allow them
to add writes before or after the fence fires. Writes that they get
in before the fence is armed are included in the fence, and writes
made after the fence fires still succeed (the fence is "retired" and
doesn't complain that it has already fired). In practice, this means
that methods that care about the writes happening as part of the
method, like Tinytest's run method, can wait for them, and methods
that don't care to wait will just return and let the writes trickle
down the pipe later (as they could before).
In a discussion with Geoff a few weeks ago, he said fences in general
should still complain about late writes unless they are put in a
special mode, so there is now a retire() method.