Skip to content

Commit

Permalink
Bump to 5.0.0 🎉
Browse files Browse the repository at this point in the history
  • Loading branch information
reconbot committed Jul 30, 2017
1 parent af82d40 commit 88b701c
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 81 deletions.
2 changes: 1 addition & 1 deletion .docs/README.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ We're not against firmware but we're better than it.

You're reading the README for Node-Serialport's master branch. You probably want to see the README for our most recent release. See our [changelog](changelog.md) for what's new, and our [upgrade guide](UPGRADE_GUIDE.md) for a walk-through on differences between major versions.

- [`[email protected]-beta9` docs](https://github.com/EmergingTechnologyAdvisors/node-serialport/blob/5.0.0-beta9/README.md) the latest `5.x` release.
- [`[email protected]` docs](https://github.com/EmergingTechnologyAdvisors/node-serialport/blob/5.0.0/README.md) the latest `5.x` release. 🎉
- [`[email protected]` docs](https://github.com/EmergingTechnologyAdvisors/node-serialport/blob/4.0.7/README.md) the latest `4.x` release.
- [`[email protected]` docs](https://github.com/EmergingTechnologyAdvisors/node-serialport/blob/3.1.2/README.md) the last `3.x` release.

Expand Down
2 changes: 1 addition & 1 deletion PUBLISHING.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ This can be checked in the .travis.yml file and appveyor.yml file. Within these
9. Kick off the build matrix for either the master or beta branch on [serialport-test-pilot](https://travis-ci.org/j5js/serialport-test-pilot). It will install serialport from npm on a wide range of systems.

Differences for beta release
* Tag like: `git tag 5.0.0-beta6 -a` and include the change log in the tag's annotation.
* Tag like: `git tag 6.0.0-beta6 -a` and include the change log in the tag's annotation.
* Publish with `npm publish --tag beta`

## Config Travis, AppVeyor and Github to generate all of the binaries.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ We're not against firmware but we're better than it.

You're reading the README for Node-Serialport's master branch. You probably want to see the README for our most recent release. See our [changelog](changelog.md) for what's new, and our [upgrade guide](UPGRADE_GUIDE.md) for a walk-through on differences between major versions.

- [`[email protected]-beta9` docs](https://github.com/EmergingTechnologyAdvisors/node-serialport/blob/5.0.0-beta9/README.md) the latest `5.x` release.
- [`[email protected]` docs](https://github.com/EmergingTechnologyAdvisors/node-serialport/blob/5.0.0/README.md) the latest `5.x` release. 🎉
- [`[email protected]` docs](https://github.com/EmergingTechnologyAdvisors/node-serialport/blob/4.0.7/README.md) the latest `4.x` release.
- [`[email protected]` docs](https://github.com/EmergingTechnologyAdvisors/node-serialport/blob/3.1.2/README.md) the last `3.x` release.

Expand Down
31 changes: 27 additions & 4 deletions UPGRADE_GUIDE.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,38 @@
Upgrading from 4.x to 5.x
-------------
5.x is a major rewrite to make node serialport a NodeJS stream. While the api surface is similar there have been a number of changes to ensure more consistent error handling and operation of a serial port.
Node SerialPort 5.0.0 is a major rewrite that improves stability, compatibility and performance. While the api surface is similar there have been a number of changes to ensure consistent error handling and operation of a serial port.

### Platforms
- Drop NodeJS 0.10, 0.12, 5, and 7 support
- Add node 8 support (we now only support LTS node versions)

### The SerialPort Object
- Node SerialPoprt is now a [duplex stream](https://nodejs.org/api/stream.html) and can be paused and resumed on all platforms.
- `isOpen` is now a property
- `SerialPort.list` now has more consistent output across all platforms. This means the data in the objects may be different than 4x. Notably the path on OSX now returns the `tty` instead of the `cu` path and the `0x` has been removed from values on linux and osx.
- `port.path` is now read only
- removed lowercase options all options are now only accepted camelCase
- Changed parsers to be transform streams. There are replacements for the built in parsers but custom parsers will have to be modified.

### Open options
- `bufferSize` is now `highWaterMark` and defaults to 64k.
- `parser` is removed in favor of using the new transform streams parsers

### Opening and closing
- Removed the `disconnect` event. The `close` event now fires with a disconnect error object in the event of a disconnection.
- `drain` now waits for the current javascript write to complete before calling the system level drain.
- `port.isOpen` is now a property not a function

### Reading and writing.
- `port.on('data')` still works but `port.read()` and the `readable` event is now the preferred way to get data.
- `port.read()` is now the best way to read data
- `port.drain()` now waits for the current javascript write to complete before calling the system level drain.

### Other
- We now conform to NodeJS error message formats. Most messages have changed.
- The event loop is no longer held open if there are no active reads or writes
- `SerialPort.list` has slightly different output with more information, decoded strings and `0x` prefixes removed from some properties.
- `SerialPort.list` now returns a promise if no call back is provided

The exact changes will go here see #1046

Upgrading from 3.x to 4.x
-------------
4.x brings a lot of changes please see the [changelog](./changelog.md) for the full list of changes. We'll review the api and behavior changes here.
Expand Down
129 changes: 57 additions & 72 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,71 +1,78 @@
Version 5.0.0-beta9
Version 5.0.0 🎉
-------------
This closes all known bugs!
Nearly [a year in the making](https://github.com/EmergingTechnologyAdvisors/node-serialport/compare/4.0.7...5.0.0-beta9) Node SerialPort 5.0.0 is a major rewrite that improves stability, compatibility and performance. The api surface is similar to version 4 there have been a number of changes to ensure consistent error handling and operation of a serial port. Notably we are now a [`Stream`](https://nodejs.org/api/stream.html)! We can also introduce a bindings layer. A small low level api to provide access to underlying hardware. External bindings written in other languages or targeting other platforms can now be used.

- [all] `SerialPort.list` now has more consistent output across all platforms.
- [all] Add promise support to serialport-repl
- [all] Add write recording capabilities to the mock bindings
- [all] calls to `.drain` now queue behind port open and in progress writes reported by and with lots of testing help from @tuna-f1sh
- [all] Change the default high water mark to 64k to match `fs.ReadStream`
- [all] fix(package): update bindings to version 1.3.0
- [all] SerialPort can now be compressed with `uglify-es` thanks to @rwaldron
- [docs] fixed a typo thanks to @amilajack
- [linux] `SerialPort.list` is now faster and less resource intensive thanks to @akaJes!
- [osx] `SerialPort.list` now returns the `tty` instead of the `cu` thanks to @@kishinmanglani
- [unix] fix a bug when poller errors would be unhandled thanks to @thiago-sylvain for reporting
Some major cpu performance gains on unix platforms can be found and we're less buggy and better performing on Windows too.

Version 5.0.0-beta8
-------------
If we're lucky this will be the last of the betas. The remaining potentially blocking issues have to do with improving `SerialPort.list` which would change their output. The two issues are #1220 and #1084. I need help on those two issues, if I'm not able to close them soon, I'll release anyway, and they'll be fixed for 6x. This release is large enough. -@reconbot
With this release we are now only supporting LTS nodejs platforms and we are dropping NodeJS 0.10, 0.12, 5 and 7 support. We loved directly supporting so many platforms but it was getting in the way making a solid library.

- [linux] Add the `ttyAP` subsystem to serialport list thanks to @fly19890211 for reporting it
- [all] Have drain wait for pending JS write operations before calling system drain thanks to @digitalhack for reporting it
- [unix] Move setting up the baudrate to the end of the open() to better support custom baudrates
See our [upgrade guide](./UPGRADE_GUIDE.md) for detail on what to change to upgrade your app to use `[email protected]`. It's not much!

Version 5.0.0-beta7
-------------
- [all] Removed the `disconnect` event. The `close` event now fires with a disconnect error object in the event of a disconnection.
- [all] Exposed mocking serialport on `serialport/test`
Thank you to the 25 people who committed code and documentation and every person who submitted bug reports and tested changes!

Version 5.0.0-beta6
-------------
- [all] The `disconnect` event now more reliable. Will be emitted as an error if there are no listeners.
- [all] `SerialPort.list` now returns a usable promise if a callback is not provided @MikeKovarik
Notable Changes
- [all] Streams rewrite, node serialport is now a node stream! 🎉
- [all] Drop NodeJS 0.10, 0.12, 5, and 7 support
- [all] Add node 8 support (we now only support LTS node versions)
- [all] Introduce a binding layer to provide a common low level interface to work with different platforms.
- [unix] New read/write subsystem. Write CPU dropped from 100% to 0-2%. @reconbot (Thanks to @indutny for getting me unstuck many times!)

Version 5.0.0-beta5
-------------
- [windows] Rewrite reading so it's pausable thanks to @munyirik
- [docs] An overhaul how we document the api leveraging JSDOC
- [docs] An overhaul of the format and language in our docs thanks to @LappleApple
- [all] Remove the c++ write queue
- [all] Add node 8 support and drop node 7 support

Version 5.0.0-beta4
-------------
- [all] add regex stream parser and tests
- [all] upgrade to non deprecated buffer methods
- [docs] Add socketio example
- [windows] Fix unhandled promise rejection when calling read on Windows

Version 5.0.0-beta3
-------------
- [all] Streams rewrite, node serialport is now a node stream! 🎉
- [all] Introduce a binding layer to provide a common low level interface to work with different platforms.
Features
- [all] `isOpen` is now a property #899
- [all] `SerialPort.list` now has more consistent output across all platforms.
- [all] `SerialPort.list` returns a promise if a callback is not provided thanks to @MikeKovarik for bug fixes
- [all] A promise aware `serialport-repl` script for debugging and testing.
- [all] add `#get` to retrieve modem status flags thanks to @jgillick!
- [all] Add a `MockBinding` object for testing serialports in your project. Used internally too!
- [all] Add electron precompiled binaries thanks to @Mike-Dax
- [all] Add regex stream parser and tests @jessicaquynh
- [all] Allow reopening after an open error #910
- [all] calls to `.drain` now queue behind port open and in progress writes reported by and with lots of testing help from @tuna-f1sh
- [all] Change parsers to be transform streams #922
- [all] Change the default `highWaterMark` to 64k to match `fs.ReadStream`
- [all] Conform to NodeJS error message formats
- [all] Drop NodeJS 0.10 and 0.12 support
- [all] Fix baud rate parsing in `serialport-terminal` thanks to @radio-miskovice for reporting it!
- [all] Fix memory leak during opening a port thanks to @indutny
- [all] Exposed mocking serialport via `require('serialport/test')`
- [all] Have drain wait for pending JS write operations before calling system drain thanks to @digitalhack for reporting it
- [all] port.path is now read only #898
- [all] Refactor internals to make use of es6 and promises
- [all] Remove lowercase options #898
- [all] Remove the c++ write queue
- [all] Remove unnecessary dependencies and polyfills thanks to @mscdex
- [all] Remove v8 deprecation warnings thanks to @indutny again
- [all] Removed the `disconnect` event. The `close` event now fires with a disconnect error object in the event of a disconnection.
- [all] SerialPort can now be compressed with `uglify-es` thanks to @rwaldron
- [all] update bindings to version 1.3.0
- [all] Upgrade debug and node-pre-gyp
- [all] Upgrade nan to fix compile issues on some platforms thanks to @thom-nic
- [all] Upgrade to non deprecated buffer methods
- [docs] Add more installation notes on sudo, windows 10, electron and node 7
- [docs] Add socketio example @jessicaquynh
- [docs] Electron build docs #965 via @chalkers
- [docs] Mark new features in 5.0.0 with the fact they started in 5.0.0
- [windows] Fix file handle leak during opens when errors occur thanks to @enami
- [docs] Update parser docs to be correct #970 via @jacobq
- [linux] `SerialPort.list` is now faster and less resource intensive thanks to @akaJes!
- [linux] Add the `ttyAP` subsystem to serialport list thanks to @fly19890211 for reporting it
- [osx] `SerialPort.list` now returns the `tty` instead of the `cu` thanks to @kishinmanglani
- [unix] Flush now gives errors and flushes tx and rx #900
- [unix] Move setting up the baudrate to the end of the `open()` to better support custom baudrates
- [windows] Refactoring of `.list` for Windows so it's significantly smaller thanks to @Zensey
- [windows] Rewrite reading so it's pausable thanks to @munyirik

Fixes
- [all] Fix baud rate parsing in `serialport-terminal` thanks to @radio-miskovice for reporting it!
- [all] Fix memory leak during opening a port thanks to @indutny
- [all] fixed a crash when pausing while reading thanks to @bminer and @baffo32 and others to debug and fix this
- [all] Upgrade nan to fix compile issues on some platforms thanks to @thom-nic
- [docs] fixed a typo thanks to @amilajack
- [docs] Spelling fixes via @Awk34
- [unix] fix a bug when poller errors would be unhandled thanks to @thiago-sylvain for reporting
- [windows] Fix file handle leak during opens when errors occur thanks to @enami
- [windows] Fix flush behavior using PurgeComm fixing #962 via @samisaham
- [windows] Fix unhandled promise rejection when calling read on Windows
- [windows] Remove read and write timeouts solving #781 via @giseburt

We also had help testing, debugging, and designing from; @alaq @arve0 @techninja @noopkat @HipsterBrown and more!

Version 4.0.7
-------------
Expand All @@ -86,18 +93,6 @@ Version 4.0.4
-------------
- Add precompiled binaries for node 7

Version 5.0.0-beta2
-------------
- [all] fixed a crash when pausing while reading thanks to @bminer and @baffo32 and others to debug and fix this
- [all] ReadLineParser has been renamed to ReadlineParser to match worldwide convention
- [windows] Fix flush behavior using PurgeComm fixing #962 via @samisaham
- [windows] Remove read and write timeouts solving #781 via @giseburt
- [docs] Electron build docs #965 via @chalkers
- [docs] Spelling fixes via @Awk34
- [docs] Update parser docs to be correct #970 via @jacobq
- [notes] buffer-indexof is now completely compliant with latest node 6 buffer.indexOf because it's nice to have and we now use it on older nodes
- [notes] dropped node 5 support, should still work but you shouldn't use it

Version 4.0.3
-------------
- Switch to the lie promise library as it's smaller and mimics nodejs's promise closer
Expand All @@ -107,16 +102,6 @@ Version 4.0.2
-------------
- [unix] Fix a bug when we'd crash when pausing during a read

Version 5.0.0-beta1
-------------
- `isOpen` is now a property #899
- Allow reopening after an open error #910
- Change parsers to be transform streams #922
- port.path is now read only #898
- Remove lowercased options #898
- Switch to Lie as a promise library (smaller)
- [unix] Flush now gives errors and flushes tx and rx #900

Version 4.0.1
-------------
- [linux] Do not replace the native Promise when it is available thanks to @zewish for the fix
Expand Down Expand Up @@ -395,7 +380,7 @@ Version 0.2.1
- Refactored the parsing code upon data receipt, now allows for dynamic specification of how incoming data is handled.
- Revised creation interface to use named parameters as an object versions positional parameters.

Version: 0.2
Version 0.2.0
------------
- Upgraded to node v. 0.4.X compatibility

Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "serialport",
"version": "5.0.0-beta9",
"version": "5.0.0",
"description": "Node.js package to access serial ports. Linux, OSX and Windows. Welcome your robotic JavaScript overlords. Better yet, program them!",
"author": {
"name": "Chris Williams",
Expand All @@ -10,7 +10,7 @@
"binary": {
"module_name": "serialport",
"module_path": "build/{configuration}/",
"host": "https://github.com/EmergingTechnologyAdvisors/node-serialport/releases/download/5.0.0-beta9"
"host": "https://github.com/EmergingTechnologyAdvisors/node-serialport/releases/download/5.0.0"
},
"main": "lib",
"repository": {
Expand Down

0 comments on commit 88b701c

Please sign in to comment.