Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

node-tap shouldn't use graceful-fs by default #85

Closed
othiym23 opened this issue Jul 23, 2013 · 1 comment

Comments

Projects
None yet
2 participants
@othiym23
Copy link
Contributor

commented Jul 23, 2013

Because tap uses glob, as a byproduct of loading the glob module, graceful-fs's polyfills are patched onto fs globally. Among other things, this means that fs.chown() starts swallowing EPERM. Reasonable people may disagree about the usefulness of this error when running as a non-privileged user (when chown is never going to work, at least on OS X), but the silent failure was surprising and cost me an hour or two of debugging and led me to believe the problem was in Node itself. Is there a way to use graceful-fs in glob without poisoning the fs module for tap users?

@isaacs

This comment has been minimized.

Copy link
Member

commented Jul 23, 2013

There's no way to make graceful-fs work without monkey-patching. I've spent the last year dealing with issues around this.

You can do npm install tap --no-optional to prevent the installation of glob's optional dep on graceful-fs. Probably a better idea is just to not have glob use graceful-fs.

isaacs added a commit to isaacs/node-glob that referenced this issue Jul 23, 2013

@isaacs isaacs closed this Jul 23, 2013

kvz added a commit to kvz/jekyll-fix-titlecase that referenced this issue Sep 21, 2015

Upgrade node dependencies
- inherits update
- v3.2.2
- lockfile@2
- v3.2.3
- Remove optional graceful-fs dependency
  See tapjs/node-tap#85
- v3.2.4
- use fs, not graceful-fs
- v3.2.5
- fix tests
- v3.2.6
- new Glob: options are optional, even with cb
  Fix #77
- v3.2.7
- regenerate test fixture
- Emit match events marked with / for dirs
  Close #81
  Close #82
  Thanks @cowboy @isaacbw
- v3.2.8
- Assert that match is never emitted after end
  Re comments from @cowboy in #81
- Mark appropriately, without premature end
  Fix #83
  Do the stat() call only when necessary, right before emitting the event
  and then moving on to the next item (or EOF) in the queue.
- v3.2.9
- minimatch@latest
- v3.2.10
- don't use ^ for version
- v3.2.11
- Use ^ for minimatch version
- v4.0.0
- Don't use 0.8 with travis
- set debug based on NODE_DEBUG env
- Fix #88 Don't fail to return on empty/comment patterns
- v4.0.1
- Ensure callback is not called multiple times on error
  Fix #85
- once-ify the callback
- regenerate test fixtures
- fix incorrect root on windows
- v4.0.2
- optionally depend on graceful-fs 3.x
- v4.0.3
- test: fix double-require fs
- Fix negation bug
  This addresses the bug where starting a pattern with ! was not
  respecting negation.
  Fixes #62
  Fixes #105
- run test fixture regeneration
- Support use-strict by moving function def out of while loop
- Ignore node_modules
  Ensure node_modules/ doesn't get checked in by mistake
- v4.0.4
- bump minimatch
- bump minimatch
- isc license
- v4.0.5
- replace outdated warning with awesome gif
- re #116: Make graceful-fs a proper dependency
- v4.0.6
- include funny gif in test fixture
- failing test and TODO comments for updated Bash 4.3 globstar behavior
- refactor _process into less unreasonable bits
- remove depth/maxDepth options
  Glob just goes until hiting ELOOP right now anyway, and
  once Bash 4.3 style behavior is implemented, the depth
  will be an even less necessary guard for globstars.  It
  already is unnecessary for non-globstar globs.
- Bash 4.3 globstar behavior
  This also organizes a lot of stuff and de-duplicates some of the
  de-duplication logic that was happening before.
  The logic for handling globstar directory traversals (and avoiding
  directory traversals for symlinked dirs) is not particularly
  optimized.  In fact, I'd be surprised if this change was not a
  pretty significant performance regression in general.  But at least
  it's more correct, so now we can start analyzing the performance
  and optimizing where it makes sense without becoming even more
  committed to incorrect behavior.
- benchmark care of @joliss
- Add benchmark/profiling scripts and fixture stuff
- add oh-my-glob.gif to npmignore to reduce package size
- Add CI build status and dependencies info in readme
- fix profile script cd
- Add contribution info
- Move sync glob function into separate class
  Step 1 of zalgo removal.
  Makes sync glob a bit faster, but I suspect that it'd be faster yet to
  just stat stuff rather than detect directories via a failed readdir,
  since the cost of error object creation and GC might be too heavy.  More
  profiling and investigation is needed.
  Before:
      $ npm run bench
      ...
      Node glob.sync timing:
      100000
      real	0m28.484s
      user	0m21.532s
      sys	0m3.331s
      Node glob async timing:
      100000
      real	0m39.003s
      user	0m29.359s
      sys	0m6.753s
  After:
      Node glob.sync timing:
      100000
      real	0m11.541s
      user	0m8.832s
      sys	0m1.665s
      Node glob async timing:
      100000
      real	0m38.648s
      user	0m29.320s
      sys	0m6.421s
  So, this cuts out about half of the time which was mostly being spent in
  silly function-wrapping and poorly factored code.
  Re #78
- move common functions into common.js
- prefer multivar to leading comma
- consistent semis
- remove deprecated bits
  That was from waaayyyy back in version 2.0.
- Refactor async glob, tests passing
- just use regular fs
  The only thing we use fds for in this util is readdir, and
  it's already cached and inflight-guarded anyway.
- put benchmark script in TMPDIR instead of project
  Too tedious to continually switch back and forth between tests and
  profiling
- GlobStar: Don't leave lstat information on the table
  This speeds up the ** benchmark considerably, by removing a LOT
  of unnecessary stats and readdirs.
- the return of pause/resume
- quieter pause/resume test
- Merge branch 'splitsync'
  Merging as --no-ff since there was a removal of the pause/resume along
  the way and some other unnecessary breaking stuff.  Also, this is a
  major refactor.
  Even though no behavior *should* have changed, the performance
  improvement is so major I'm considering bumping the major version number
  on general principle, since the extreme speed increase might break
  programs.
  Fix #78
- v4.1.0
- add inflight dep
- v4.1.1
- v4.1.2-beta
- sync: throw if cb provided
  Fixes confounding bug in #128.
- v4.1.2
- Properly return results from sync mark:true globs
  Fix #129
- v4.1.3
- Use manual iteration rather than Array.map. Tiny perf bump.
- only include needed files in npm publish
- remove graceful-fs
- quieter test
- Fixed accidental global var in _readdir
- Add test for global leakage, and catch another leaked global
- v4.1.4
- fix stat event not having the stat
- test for stat object return
- global-leakage test
- v4.1.5
- No need to ignore benchmark-fixture
  Benchmark fixture is placed in TMPDIR now.
- Better documentation
- handle globstar symlinks the same as Bash 4.3
  Fixes #135
- v4.1.6
- Add nodir flag
  Fix #121
- do nothing after abort() is called
- add glob.hasMagic function
- add some missing options and info to the doc
- v4.2.0
- has-magic test
- v4.2.1
- Fixed a misspelling in the README.
- Remove second copy of `nocase` option notes
  There were two copies of the `nocase` option documentation with two different wordings for the same thing. Removed one of them, the one which seemed less polished.
- Use localeCompare for sorting strings
  The better to unicode
- Sort readdir results
  Fix #143
- v4.2.2
- Use minimatch 2.x
- v4.3.0
- Corrected four minor typos in README.md
  Line 34: so `a{/b/c,bcd}` would expand into `a/b/c` and `abc*d*\.
  Line 39: Matches 0 or more characters in a sin*g*le path portion
  Line 103: glob.hasMagic(patter*n*, [options])
  Line 134: Create a Glob object by instanti*ati*ng the `glob.Glob` class.
- Bump minimatch dep
  Fixes #145
- Fix non-deterministic test
- v4.3.1
- Make nocase-nomagic test pass on Windows
  Just normalize slashes for justice.
- make all tests pass on windows
- Correct slash behavior for dirs passed as pattern
- v4.3.2
- Settle on single quotes
- make readdir-order test deterministic
- v4.3.3
- test setup remove npm-debug.log file
- Revert "Sort readdir results"
  This reverts commit bbaa547a9bd695ca71b6f1c40d6423acae1d1eef.
  Rationale:
  isaacs/node-glob#143 (comment)
- v4.3.4
- Merge pull request #138 from mikeobrien/readmetweak
  Fixed a misspelling in the README.
- Merge pull request #141 from benhutchins/patch-1
  Remove second copy of `nocase` option notes
- use newer tap
- v4.3.5
- New: Added ignore option (fixes #115)
- ignore tests DRY-up
  Just list the cases, and then do them all async and sync
- Ignore code cleanup and factoring
- v4.4.0
- Provide ref to #167 in 'callback provided to sync' error
- v4.4.1
- Fix broken symlink handling
  Root cause isaacs/rimraf#65
  Root cause ember-cli/ember-cli#3413
  Root cause Rich-Harris/sander#1
  Fix #170
- v4.4.2
- note about deprecation of {sync:true} option in favor of glob.sync() method
- Add 'follow' option to follow directory symlinks in ** matches
  Fix #139
- Remove extra stat in mark/stat end flow
  This also is an annoying race condition that delays the 'match'
  event unnecessarily in many cases.
- Always cache based on absolute path
  This was resulting in some weird behavior especially in the ignore
  case, and sometimes causes 'mark' to not detect dirs properly.
  It's also a blocker for doing realpath and marking together, since
  otherwise it can't tell that it's already statted a particular dir.
- FIXUP follow test
- Realpath support
  Close #148
  Close #142
- Properly exclude files from /-ending patterns
  When the cwd was set, it'd change the absolute path to always be
  slash-free, so filtering based on `/` at the end of a pattern wasn't
  working.
  Fix #158
- v4.5.0
- Deprecate comments and negation
- v5.0.0
- test: Merge mark, add sync nodir, failing cases for #174
- Fix nodir/mark regression from absolute-ifying cache keys
  Fix #174
- v5.0.1
- Ensure that cache keys are always absolute paths
  This would have prevented the regression introduced in 4.5.0 in mark and
  nodir being used in conjunction with cwd.
- Fix for 0.10, where path.isAbsolute is not exposed
- test: nonull failing cases for #176
- Fix nonull regression (fixes #176)
- v5.0.2
- doc fixup: remove duplicate mention of statCache
- fix interaction between realpath and cwd options
  Fix #181
- v5.0.3
- use `path-is-absolute` polyfill module
  It's the same code as `path.isAbsolute()` in Node 0.12 and iojs.
  https://github.com/sindresorhus/path-is-absolute
- v5.0.4
- quote the versions in .travis.yml so they're matched correctly
  The current one matches Node `0.1` and `0.11`.
  Also test on `iojs`.
- v5.0.5
- Better global detection
  Newer versions of node-tap don't create a TAP_Global_Harness global
- tap 1.x
- v5.0.6
- Don't lose weird readdir errors
  Fixes #197
- v5.0.7
- test-regen
- v5.0.8
- reduce cases where tests need to be regenerated
- v5.0.9
- Test base-matching
- add more sync cb thrower tests
- ignore .nyc_output, upgrade tap, use coverage, rm fixtures
- v5.0.10
- Remove duplicate option description
  `nonull` was listed twice in the options descriptions.
- Use graceful-fs if available
- v5.0.11
- Revert "Use graceful-fs if available"
  This reverts commit f09292b72c58b03416dbc60230aa2647ba47daec.
- v5.0.12
- Do not emit 'match' events for ignored items
  Fix #194
- v5.0.13
- Treat ENOTSUP like ENOTDIR in readdir
  Fix #205
- Fix some 'use strict' errors
- Use js for benchmark cleanup
  Fix #199
- Generate fixtures more effectively, with -O instead of eval
- Test for when readdir raises ENOTSUP
  Treat as if it had raised ENOTDIR instead.
- Handle ENOTSUP for sync glob as well as async
  Hopefully fix #208.  At any rate, a better test that verifies it's doing
  what it claims to be doing.
- v5.0.14

- Merge pull request #1860 from megawac/memoize-lu
  Only coerce address to a string once
- Quote reserved word property names in tests
- Update _.map docs for consistency with _.each
- Merge pull request #1863 from acgessler/patch-2
  Update _.map docs for consistency with _.each
- Make _.uniq work with sorted = true and an iteratee. Fixes #1866
- Merge pull request #1867 from akre54/sorted-uniq-with-iteratee
  Make _.uniq work with sorted = true and an iteratee
- use _.contains in _.uniq instead of indexOf
- Merge pull request #1868 from akre54/uniq-contains
  use _.contains in _.uniq instead of indexOf
- Simplify flatten implementation and add startIndex to syntax
- Use flatten and omit and pick
- Flatten supports null; Loop instead of push.apply
- Merge pull request #1685 from megawac/flatten
  Rework internal flatten function
- indexOf and lastIndexOf simplifications
- Merge pull request #1876 from megawac/indexof-s
  indexOf and lastIndexOf simplifications
- Fixes #1883 — hides _.iteratee behind a veil of silence...
- variable/property distinction for improved API/test clarity.
  Using the same letters "moe" for variable name and property value was a bit confusing upon my initial reading of _.property's functionality.
  Altering the variable name "moe" to "stooge" eliminates the potential for confusion arising due to polysemy.
  Similar docs and related tests were likewise updated.
  Conflicts:
  	index.html
  	test/utility.js
- remove right-hand-side alignment spacing for non-assignment statement pair
- Merge pull request #1507 from rck109d/master
  documentation: improved clarity with variable/property distinction
- Change _.noConflict doc text to monospace format
- Release func in _.before and _.once
- Merge pull request #1894 from dimitriwalters/master
  Change _.noConflict doc text to monospace format
- Merge pull request #1895 from zertosh/fix-once-before-leak
  Release func in _.before and _.once
- Update index.html
- Update index.html
- Update _.template docs.
- Merge pull request #1899 from braddunbar/interpolate-values
  Update _.template docs.
- Partial support for constructors
- Merge pull request #1733 from megawac/partial-constructor
  Partial support for constructors
- Result fallback can be a function
- Merge pull request #1900 from megawac/result-fallback-fn
  Result fallback can be a function
- Revert "Result fallback can be a function"
  This reverts commit b8a07d1d94cd6d4586e89a63fda41f2814dc63ce.
- Merge pull request #1897 from ankurp/master
  Including Swift Port in Links & Suggested Reading
- Iteratee: don't make assumptions on # args to pass
- Unrevert "Result fallback can be a function" PR #1900
  This reverts commit 40e8517c8318553ec94b656a6b829d4768c1e046.
- Implement findKey and findIndex helpers
- find*: style tweak and test coverage
- Merge pull request #1587 from megawac/find-index
  Add _.findKey and _.findIndex
- move _.before gc conditional to a single line
- check for array length when evaluating isSorted
- removed tabs to conform with coding style
- Merge pull request #1917 from tjbarber/avoid-returning-zero-truthy-isSorted
  Fixes #1870: _.indexOf with `isSorted` of `true` will incorrectly match `undefined` on an empty array.
- Added _.propertyOf method and tests
- Used function(){} in place of _.noop
- Merge pull request #1921 from bathos/master
  Added _.propertyOf method
- Add _.keysIn method
- Merge pull request #1910 from thejameskyle/keysIn
  Add _.keysIn method
- Create _.assign function
- Merge pull request #1902 from megawac/iteratee-args
  Iteratee: don't make assumptions on # args to pass
- Kill the result var in isEqual
- Merge pull request #1934 from megawac/sans-result
  [minor] Clean up _.isEqual for objects and arrays
- Optimize isFunction only when appropriate.
  Closes #1929.
- Move sortedIndex tests from comparitors -> array tests
- Fix changelog for _.escape
- Merge pull request #1940 from unrealsolver/master
  Fix changelog for _.escape: function no longer escapes slash '/'
- missing new on a typeerror
- Merge pull request #1908 from thejameskyle/assign
  Add _.assign function
- Test typed arrays are functions
- Add _.create method
- Merge pull request #1907 from thejameskyle/create
  Add _.create method
- Alias? includes as contains
- Merge pull request #1955 from megawac/includes
  Alias? includes as contains
- Object-preserving map() function: mapValues
- Remove `reduce` error throwing
  Closes #1858.
- Support fromIndex in _.contains
- Improve invoke coverage
- Merge pull request #1963 from megawac/invoke-cov
  Improve invoke coverage
- Use a version of phantomjs that doesn't compain about SOP
  e.g. https://travis-ci.org/jashkenas/underscore/builds/43040393#L83
- Merge pull request #1962 from megawac/from-contains
  Support fromIndex in _.contains
- Adds a test case when we call _.pluck() to objects passing an undefined property as an argument.
- Merge pull request #1971 from shinnya/feature/add-pluck-test-case
  Adds a test case when we call _.pluck() to objects passing an undefined property as an argument.
- Add _.transform method
- better test method for missing properties in pluck
- Merge pull request #1961 from jridgewell/remove-reduce-errors
  Remove `reduce` error throwing
- Merge pull request #1936 from jridgewell/isFunction_safari_8
  Optimize isFunction only when appropriate.
- Minor cleanup of #1936
- Merge pull request #1974 from megawac/isFunction
  Update isFunction tests
- fix _.sortedIndex for large indexes
  fixes #1850
- Use partial for defer.
- Merge pull request #1977 from jridgewell/partial_defer
  Use partial for `_.defer`
- Clarify documentation.
- Merge pull request #1979 from robbiehudson/clarify_after_documentation
  Clarify documentation for _.after and _.before
- Merge pull request #1954 from deiwin/fix-sorted-index
  fix _.sortedIndex for large indexes
- Add installation instruction for Meteor
- fix eslint warnings
- revert dot-notation warnings
- Merge pull request #1987 from maxbeatty/fix-warnings
  fix eslint warnings
- fix typo
- Merge pull request #1989 from linkkingjay/master
  fix typo
- Merge pull request #1982 from uzumaxy/master
  Add installation instruction for Meteor
- Move sortedIndex to Array methods + some annoying files to gitignore
- Wrap redundant reduce and reduceRight code in helper
- Merge pull request #1901 from thejameskyle/transform
  Add _.transform method
- Merge looping implementation [needs benchmarks]
- Implement zip via unzip
- Invoke shouldn't throw for null or undefined
- Add _.comparator and align sortedIndex to sortBy
- Merge pull request #1939 from megawac/comparitors
  Add _.comparator and align sortedIndex to sortBy
- Reuse (optimized) reduce and reduceRight iteration
- Merge pull request #1994 from megawac/invoke-null
  Invoke shouldn't throw for null or undefined
- Revert "Merge pull request #1939 from megawac/comparitors"
  This reverts commit 5f52e5bc4ba98fdedac6703d2e1bbc46fa6cc66d, reversing
  changes made to 9924dba231366913acba8a3016823c403dca9ac3.
- Add engine proxy methods to toJSON, toString and valueOf
- Merge pull request #1991 from megawac/reduce-reuse
  Wrap redundant reduce and reduceRight code in helper
- Implement more rigid array like checks throughout library
- Update with changes from 1.7 to 1.8
- isEqual initialize stacks only if and when we need them
- Merge pull request #2013 from rndr/isEqualFix
  isEqual initialize stacks only if and when we need them
- Added example for _.sortBy( obj, string )
- Merge pull request #2014 from danielmbarlow/danielmbarlow-patch-1
  Added example for _.sortBy( obj, string )
- Add _.transform docs + address comments
- Readd _.object example
- Merge pull request #1993 from megawac/zip-via-unzip
  Implement zip via unzip
- Merge pull request #1990 from jashkenas/is-arraylike
  Implement a more rigid is length check
- Add iteration fixes of _.keys to _.isEmpty (fixes #1983, closes #1988)
  use current isEmpty obj way unless has enum bug
  check length beforehand to improve isEmpty perf
  add length check before type checks in isEmpty
  add test for non enum prop
  keep fixes isolated to as few areas as possible
  use inline comments
- Map partial instead of slice
- Merge pull request #2021 from jridgewell/map-partial
  Map partial's args instead of slicing
- Add check to createAssigner function so that _.defaults can use it (fixes #1984)
- Merge pull request #2022 from jmrog/devel
  Add check to createAssigner function so that _.defaults can use it (fixes #1984)
- Stop _.extend from turning dest obj's 'in' props into 'own props (fixes #2023)
- Add test for _.extend (no changing 'in' props to 'own' props; see bug #2023)
- Merge pull request #2024 from jmrog/extendFix
  Fix and test for _.extend (fixes #2023)
- Merge pull request #2003 from megawac/engine-proxy-methods
  Add engine proxy methods to toJSON, toString and valueOf
- Add _.findLastIndex and handle NaN in *IndexOf
- Cover argument cases for NaN
- Implement find*Index functions with helper
- Merge pull request #1981 from megawac/NaN-finding
  Add _.findLastIndex and handle NaN in *IndexOf
- Improve _.isFunction comment
- wrap constants or objects passed to _.times in _.constant
  so you can do stuff like this:
  _.times(3, 'Foo') // ['Foo', 'Foo', 'Foo']
  which can be useful for indenting text, for instance
  _.times(level, '  ').join('') + line
- added test for #2029
- bugfix, it's iteratee, not context that should be wrapped
- Merge pull request #2029 from gka/patch-1
  wrap constants or objects passed to _.times in _.constant
- Merge pull request #1953 from greenify/master
  Object-preserving map() function: mapValues
- Documentation for find{Index,LastIndex,Key} and mapValues
- Improve consistency of variable declarations
- Merge pull request #2030 from megawac/var-dec
  [minor] Improve consistency of variable declarations
- Add node.js 0.12 and io.js to travis.yml
- Remove several unneeded null checks
- Use isArrayLike in transform
- Merge pull request #2031 from megawac/null-check
  Remove several unnecessary null checks
- Run tests in node & phantom
- Merge pull request #2033 from jashkenas/node-testing
  Run test suite on node
- Update phantomjs version range
  For io.js ping #2032
- Merge pull request #2032 from demohi/patch-1
  Add node.js 0.12 and io.js to travis.yml
- Fixed copyright range to be updated to 2015
- Merge pull request #2034 from arianf/master
  Fixed copyright range to be updated to 2015
- Update _.range docs to clarify end is exclusive #2002
  I have updated the documentation for _.range to clarify explicitly that the end value _.range accepts is exclusive and the start value is inclusive. Attached is a screen shot of the changes:
  http://i.imgur.com/SIkBwUW.png
- Merge pull request #2035 from amZotti/master
  Update _.range docs to clarify end is exclusive [fix #2002]
- Update _.map docs to explain guarded iteratees
  I am a regular user of Underscore and only after reading through the Underscore source code did I learn about _.map being able to handle guarded functions as iteratees. If I have been unaware of guarded functions while using Underscore regularly then chances are there are many other engineers who are equally unaware of this great functionality.
- Add "Guarded" on _.map iteratee's [fix #2036]
  Certain underscore methods can be used as iteratee's to _.map. These
  methods can be referred to as 'Guarded' methods. In pull request #2036 I
  have requested that this functionality be included in the documentation
  for _.map on index.html. I am following up with that pull request with
  this one, which includes documentation that states exactly which methods
  are guarded methods.
  I am attempting to inform other Underscore developers of this great
  functionality by marking appropriate functions as "Guarded" within
  index.html. This "Guarded" statement uses the same CSS stylings as
  span.alias.
  Nothing has been changed besides the appropriate documentation shifts
  described above. Screenshots will be included in pull request.
- Refactor 'guarded' explanation into two lines
- Update QUnit to v1.17.1
- Merge pull request #2043 from amZotti/add-guarded-statements
  Add "Guarded" on _.map iteratee's [fix #2036]
- Reverts #2029.
- Add underscore-min.map to packaged files
- Merge pull request #2048 from cbguder/patch-1
  Add underscore-min.map to packaged files
- Refactor tests; don't install phantom by default; karma for browser tests
- Merge pull request #2054 from jashkenas/karma
  Refactor tests; don't install phantom by default; karma for browser tests
- Test against infinite loops when collection changes
- Merge pull request #2053 from megawac/length-testing
  Test against infinite loops when collection changes
- Update qunit-cli (devongovett/qunit-cli#11)
- Add proper Object function matches
  This takes `_.matches` and turns it into a proper Object function
  (takes the object as the first parameter). The should satisfy the
  performance problems seen in
  [jashkenas/backbone#3487](jashkenas/backbone#348
  7#issuecomment-75001423).
  I think it’s pretty apparent we jumbled the arguments originally. See
  the need to special case
  [`Backbone.Model#matches`](https://github.com/jashkenas/backbone/blob/ma
  ster/backbone.js#L390-L393) instead of auto proxying like the other
  [`_`
  methods](https://github.com/jashkenas/backbone/blob/master/backbone.js#L
  669-L680). We even have to special case
  [`Collection#matches`](https://github.com/jashkenas/backbone/blob/master
  /backbone.js#L917-L924) so we don’t kill performance doing simple
  `where`s.
  The legacy `_.matches(obj)` predicate matcher has been extracted into
  `_.matcher`. `_.matches` will return the predicate matcher if only one
  argument is provided. This legacy support should be removed in v2.0.
- Merge pull request #2057 from jridgewell/matches-matcher
  Add proper Object function matches
- Removing the iffy 'guarded' tags from the docs.
- removing repetitive 'guard check' comments
- Fixes #1915 -- _.clone doesn't do dates, regexes, other fancy things
- #2057 s/matches/isMatch+matcher
- 1.8-WIP ... still needs to be further reduced and cleaned
- merged 1.8 stuff
- /s/mapValues/mapObject and so on...
- working on docs etc
- I think we're ready?
- Ch-ch-ch-chaanges.
- Merge branch 'master' into gh-pages
- document isMatch, matcher
- Merge branch 'master' into gh-pages
- remove broken IE hack-arounds ... IE8 failing tests down to 14
- Fixing pick and omit for IE
- removing hokum from _.bind
- remove 'fasley' edge case tests
- removing bound constructor function fallback tests
- prepping 1.8.1 — tests are now fixed or killed.
- Revert "removing bound constructor function fallback tests"
  This reverts commit 9f25c2a42821acd1d80e3fde7f594051076d3ac2.
- Revert "removing hokum from _.bind"
  This reverts commit ba7b8f18dabb4ebb49e1f0c0076dc0b23b436878.
- Fix bound functions in IE8
- Merge pull request #2063 from jridgewell/ie8-bound-functions
  Fixes bound functions in IE8
- fixing previous commit for IE
- Underscore 1.8.1
- Merge branch 'master' into gh-pages
- Revert "remove broken IE hack-arounds ... IE8 failing tests down to 14"
  This reverts commit 5350a2ff3e362757f384c7c0096f24ad68c38fd0.
- no need to stoop...
- Merge branch 'master' into gh-pages
- Revert "remove 'fasley' edge case tests"
  This reverts commit ef3164fcad059434a95f0eb5ad48dba1999a5b62.
- Fix IE non-enumerable properties
  I’m not sure what we were doing before with the `FuncProto`…
- "fasley" to "falsey"
- Refine _.pick
- Merge pull request #2064 from jridgewell/ie-non-enumerable
  IE Non-Enumerable properties
- Merge pull request #2065 from jridgewell/refine-pick
  Refine _.pick
- Merge pull request #2066 from paulfalgout/ie-non-enumerable
  Fix object test wording "fasley" to "falsey"
- Avoid an arguments deopt
  https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#31-re
  assigning-a-defined-parameter-while-also-mentioning-arguments-in-the-bod
  y-typical-example
- Use async retries to avoid rare throttle false-negative
- Merge pull request #2069 from megawac/qunit-extras
  Use async retries to avoid rare throttle false-negative
- Simplify karma file
- 🎊 Karma Sauce Integration! 🎆
  Fix travis keys
- Fix cherry-pick artifact
- Remove transform use due to 4f771e0a0
- Merge pull request #2068 from jridgewell/refine-pick
  Avoid an arguments deopt
- Rename extendOwn to assign
  “assign” is an ES6 standard, and naming should match it. Any dev who
  remotely follows ES will immediately recognize and understand what it
  does.
  Aliases `_.assign` to `_.extendOwn`, for 1.8.0 compatibility.
- Merge pull request #2059 from jashkenas/sauce-setup
  SauceLabs setup
- Merge pull request #2070 from jridgewell/assign-extendOwn
  Assign extendOwn
- Support fromIndex in _.contains
- Add _.create method
- Merge pull request #2072 from jridgewell/contains-fromIndex
  Contains fromIndex
- s/assign/extendOwn as the primary name.
- Document the lame  in _.includes
- updated mapObject example text in index.html
- Merge pull request #2077 from 91bananas/master
  updated mapObject example text in index.html
- Underscore 1.8.2
- component bump
- Merge branch 'master' into gh-pages
- fixed isArrayLike returning  for 0
- Merge pull request #2079 from smelnikov/isArrayLike-fix
  fixed isArrayLike returning true for 0
- Merge pull request #2074 from jridgewell/create
  Add _.create method
- s/assign/extendOwn
- Add failing test for each called too much time.
  ios8 only.
- Merge pull request #2088 from francois2metz/ios8_my_lovely_jit
  Add failing test for each called too much time in ios8
- Corrected the parameter name for mapObject within the index documentation
- Merge pull request #2097 from emmanne08/master
  Corrected the parameter name for mapObject within the index documentation
- Fix _.indexOf with NaN and startIndex
  Was returning the index in the sliced array
- Merge pull request #2102 from jridgewell/indexof-nan-start
  Fix _.indexOf with NaN and startIndex
- Optimize _.range
  Prevents an [arguments
  deopt](https://github.com/petkaantonov/bluebird/wiki/Optimization-killer
  s#31-reassigning-a-defined-parameter-while-also-mentioning-arguments-in-
  the-body-typical-example).
- Merge pull request #2107 from jridgewell/range-opt
  Optimize _.range
- Guard _.contains fromIndex
  Guards `_.contains`’s `fromIndex`, so that it may be easily used with
  `_.partial`.
  ```javascript
  var array = [1, 2, 3, 4, 5];
  var subArray = [1, 2];
  // Before
  _.every(subArray, function(i) { return _.contains(array, i); });
  // After
  _.every(subArray, _.partial(_.contains, array));
  ```
- Merge pull request #2109 from jridgewell/contains-gaurd
  Guard _.contains fromIndex
- Remove link to nonexistent create method. Fixes #2112
- Remove link to nonexistent create method. Fixes #2112
- Combine _.indexOf and _.lastIndexOf
- Merge pull request #2105 from jridgewell/indexOf-lastIndexOf-code-sharing
  Combine _.indexOf and _.lastIndexOf
- Make _.uniq doc more precise
- Merge pull request #2120 from phadej/uniq-doc
  Make _.uniq doc more precise
- Small indexOf Perf Boost
  @megawac / @jdalton noticed a [pref regression](http://jsperf.com/indexof-pr2105)
  in #2105. This should fix it.
  [jsperf](http://jsperf.com/indexof-pr2105/3)
- Merge pull request #2122 from jridgewell/indexOf-lastIndexOf-code-sharing
  Small indexOf Perf Boost
- Remove unneeded files from bower package
- Merge pull request #2127 from JustBlackBird/clean_bower_package
  Remove unneeded files from bower package
- Prevent iOS from improperly JIT-ing isArrayLike
  Fixes #2081. @jdalton found a much more efficient solution than
  `'length' in collection` by using dynamic property access. Uses
  a constant `LENGTH` variable to avoid minifiers transforming it
  into dot access.
- Merge pull request #2094 from jridgewell/ios-jit-isArrayLike
  Prevent iOS from improperly JIT-ing isArrayLike
- Fix travis install not working in node@0.8
  see jridgewell/underscore@1178042
  /cc @othiym23
- Merge pull request #2135 from megawac/travis-npm-fix
  Fix travis install not working in node@0.8
- Fix iOS JIT Bug, Part 2
  Given Closure Compiler’s [need to inline](jashkenas/underscore#2094 (comment)),
  we need to grab the length using a function (that uses dynamic property access).
  @megawac also pointed out a few other methods would be affected.
- Merge pull request #2134 from jridgewell/ios-jit-isArrayLike
  Fix iOS JIT Bug, Part 2
- Underscore 1.8.3
- Merge branch 'master' into gh-pages
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.