Выпуск io.js 1.0, форка серверной JavaScript-платформы Node.js

14.01.2015 06:56

Доступен первый выпуск серверной JavaScript-платформы io.js 1.0, которая может быть использована как для серверного сопровождения работы Web-приложений, так и для создания обычных клиентских и серверных сетевых программ. Проект io.js был основан семью активными разработчиками Node.js и является ответвлением от кодовой базы Node.js 0.11.

Из особенностей io.js 1.0 можно отметить переход на новую версию JavaScript-движка V8 3.31.71.4 (в node.js 0.10 используется V8 3.14, а в node.js 0.12 будет использован выпуск 3.26) и обеспечение поддержки новых возможностей, представленных в спецификации ECMAScript 6. Уже проверенные стабильные возможности ECMAScript 6, такие как генераторы, шаблоны, новые строковые методы, оператор let и коллекции, доступны в io.js по умолчанию, без необходимости указания флага "--harmony", требуемого в node.js 0.12. Для включения в io.js ещё не до конца протестированных возможностей, таких как классы, предложен новый флаг "--es_staging", а для активации средств, разработка которых не завершена, потребуется индивидуальное включение каждой возможности (например, "--harmony_arrow_functions").

По сравнению с Node.js v0.10.35 в состав io.js v1.0 добавлены новые версии модулей c-ares 1.10.0-DEV, http_parser 2.3, libuv 1.2.0, npm 2.1.18, openssl 1.0.1k и punycode 1.3.2. Включены дополнительные наработки по оптимизации производительности. Добавлены новые методы в класс Buffer, такие как buf.writeUIntLE, Buffer.compare() и buffer.equals(), представлен конструктор "new Buffer(otherBuffer)". Значительно расширены возможности модулей crypto и tls, в том числе появились средства шифрования по открытым ключам RSA, возможность шифрования ключей паролем, поддержка хэша pbkdf2 и алгоритма ECDH (Elliptic Curve Diffie Hellman).

Кроме того, добавлен новый модуль smalloc с реализацией внешней системы распределения памяти. Переписан и расширен модуль vm. Добавлены новые методы в модули streams, zlib (zlib.flush, zlib.param), util (util.debuglog), process (beforeExit), path (path.parse и path.isAbsolute), http (response.write, response.end), fs (fs.access), dns (dns.resolveSoa, dns.getServers, dns.setServers).

Мотивом создания форка является недовольство политикой компании Joyent, курирующей разработку проекта Node.js. В частности, основное недовольство связано с игнорированием мнения сообщества и затягиванием процесса разработки новых выпусков. С точки зрения организации процесса разработки, io.js отличается привлечением для координации развития проекта управляющего совета, сформированного из активных представителей сообщества и не зависящего от отдельных компаний. Io.js также примечателен более коротким циклом разработки новых выпусков, что позволит оперативно доводить новшества до пользователей.