4.13.0
expressjs/express4.13.0Jun 21, 2015by dougwilson
AI Summary
Express 4.13.0 is a minor release focused on bug fixes, performance improvements, and dependency updates. Key fixes include resolving issues with res.format errors, next('route') in app.param, and route patterns with wildcards and capture groups. The release also includes a security fix for decodeURIComponent and multiple performance optimizations.
Key Highlights
- Fixed res.format error when only default provided
- Fixed next('route') in app.param incorrectly skipping values
- Fixed routing issues with '*' before params and capture groups before params
- Security fix: Only URIError from decodeURIComponent returns 400 (not all errors)
- Multiple dependency updates including etag, send, serve-static, and finalhandler
New Features
- Added settings to debug output
- Simplified res.cookie to call res.append internally
- Use array-flatten module for flattening arrays
Full Release Notes
- Add settings to debug output
- Fix `res.format` error when only `default` provided
- Fix issue where `next('route')` in `app.param` would incorrectly skip values
- Fix hiding platform issues with `decodeURIComponent`
- Only `URIError`s are a 400
- Fix using `*` before params in routes
- Fix using capture groups before params in routes
- Simplify `res.cookie` to call `res.append`
- Use `array-flatten` module for flattening arrays
- deps: accepts@~1.2.9
- deps: mime-types@~2.1.1
- perf: avoid argument reassignment & argument slice
- perf: avoid negotiator recursive construction
- perf: enable strict mode
- perf: remove unnecessary bitwise operator
- deps: cookie@0.1.3
- perf: deduce the scope of try-catch deopt
- perf: remove argument reassignments
- deps: escape-html@1.0.2
- deps: etag@~1.7.0
- Always include entity length in ETags for hash length extensions
- Generate non-Stats ETags using MD5 only (no longer CRC32)
- Improve stat performance by removing hashing
- Improve support for JXcore
- Remove base64 padding in ETags to shorten
- Support "fake" stats objects in environments without fs
- Use MD5 instead of MD4 in weak ETags over 1KB
- deps: finalhandler@0.4.0
- Fix a false-positive when unpiping in Node.js 0.8
- Support `statusCode` property on `Error` objects
- Use `unpipe` module for unpiping requests
- deps: escape-html@1.0.2
- deps: on-finished@~2.3.0
- perf: enable strict mode
- perf: remove argument reassignment
- deps: fresh@0.3.0
- Add weak `ETag` matching support
- deps: on-finished@~2.3.0
- Add defined behavior for HTTP `CONNECT` requests
- Add defined behavior for HTTP `Upgrade` requests
- deps: ee-first@1.1.1
- deps: path-to-regexp@0.1.6
- deps: send@0.13.0
- Allow Node.js HTTP server to set `Date` response header
- Fix incorrectly removing `Content-Location` on 304 response
- Improve the default redirect response headers
- Send appropriate headers on default error response
- Use `http-errors` for standard emitted errors
- Use `statuses` instead of `http` module for status messages
- deps: escape-html@1.0.2
- deps: etag@~1.7.0
- deps: fresh@0.3.0
- deps: on-finished@~2.3.0
- perf: enable strict mode
- perf: remove unnecessary array allocations
- deps: serve-static@~1.10.0
- Add `fallthrough` option
- Fix reading options from options prototype
- Improve the default redirect response headers
- Malformed URLs now `next()` instead of 400
- deps: escape-html@1.0.2
- deps: send@0.13.0
- perf: enable strict mode
- perf: remove argument reassignment
- deps: type-is@~1.6.3
- deps: mime-types@~2.1.1
- perf: reduce try block size
- perf: remove bitwise operations
- perf: enable strict mode
- perf: isolate `app.render` try block
- perf: remove argument reassignments in application
- perf: remove argument reassignments in request prototype
- perf: remove argument reassignments in response prototype
- perf: remove argument reassignments in routing
- perf: remove argument reassignments in `View`
- perf: skip attempting to decode zero length string
- perf: use saved reference to `http.STATUS_CODES`