Cylon.js 1.0.0 is here!

by Andrew Stewart and Ron Evans

It's been a long time coming, but version 1.0.0 of Cylon.js is finally here!

We're thrilled to share this with all of you.

If you want a "media-friendly" version of the story, here is our press release about it: http://cylonjs.com/news/cylon-1.0-release

This release signifies we think the core APIs in Cylon are stable, and we don't anticipate any more breaking changes in the near future.

In addition, we have made a number of important changes:

Removed Single Connection/Device Syntax

The outdated, deprecated method of specifying a single device or connection when creating a robot has now been fully removed.

Attempting to instantiate a robot in this manner will now throw an error.

Bound Functions By Default

Methods passed to the robot initializer are now auto-bound:

Cylon.robot({ connections : { arduino : { adaptor : " firmata " , port : " /dev/ttyACM0 " } }, devices : { led : { driver : " led " , pin : 13 } }, blink : function () { this .led.toggle(); }, work : function (my) { every(( 1 ).second(), my.blink); } }).start();

Basestar#respond

A new method has been added to the base class for Drivers and Adaptors, #respond .

This method provides a simple interface for device/adaptor methods to handle both callbacks and events.

It's signature is #respond(event, callback, err, ...vals) .

The error/values are provided to the callback directly. If err is a non-null value, the "error" event is emitted with err provided as a value. Otherwise, the provided event is emitted, with vals passed as arguments.

Example usage:

Driver.prototype. write = function (pin, val, callback) { doAsyncThing(pin, val, function (err, data) { this .respond( " write " , callback, err, data); }.bind( this )); }

Debug mode flag

This release also adds a quicker way to run your robots in debug logging mode - just add the --debug flag to your command when running it.

As always, you can check out the compare view on GitHub for more details.

Contributors

We'd really like to extend a massive thanks to all the contributors who've helped get Cylon.js to this point. We couldn't have done this without you.

Adrian Zankich

Andrew Nesbitt

Andrew Stewart

Avner Cohen

Caleb Oller

Chris Boette

Chris Matthieu

Daniel Fischer

Daniel Lamb

Daniel Portales

Edgar Silva

Evoliofly

Felix

Fábio Franco Uechi

Guido García

James Brown

Janaka Abeywardhana

Jarrod Ribble

Jasson Cascante

Jasson Qasqant

Javier Cervantes

Jay Wengrow

Jérôme Loï

Julian Cheal

Justin Smith

Kraig Walker

Loren West

Luis Felipe Perez

Mario Ricalde

Matheus Mariano

Michael Harris

Mike Skalnik

Nathan Zankich

Rafael Magana

Reid Carlberg

Ron Evans

Sonic Radish

Theron Boerner

Tomasz Szymanski

Wojtek Erbetowski

Xixe Bombilla

chrisfp

gorhgorh

peterainbow

Thanks Again

We can't overstate how thankful we are to our users and contributors.

For more updates, be sure to follow us on Twitter at @CylonJS.