Skip to content

Node.js версии 0.1.90

14/04/2010

Итак, Node.js обновилась до 0.1.90. Я сразу её поставил и просмотрел потенциально интересные изменения.

Buffer

Буфер — новый класс для работы с двоичными данными. Он позволяет представлять двоичные данные в виде объекта с фиксированным размером, с соответствующими методами вроде slice или write. От обычных массивов отличается эффективностью и правильной поддержкой Unicode — например, при записи utf-8 строки из одного буфера в другой, ограниченный по размеру, многобайтовые символы будут записаны только целиком.

    var Buffer = require('buffer').Buffer,
        sys = require('sys');

    var data = new Buffer(12);

    data.write('Hello  world', 'binary', 0);
    data.write(',', 'binary', 5);

    sys.puts(data.toString('ascii', 0, 12)); // Hello, world
    

Buffer.write() помещает данные в буфер, Buffer.toString() преобразует буфер в строку в заданной кодировке. Все созданные буферы хранятся в памяти отдельно от других переменных JavaScript.

Это, кстати, позволяет обращаться к буферам быстрее чем к родным JavaScript-строкам. Товарищ creationix уже попробовал использовать буфер для кеширования страниц. Результат впечатляет: при кешировании в строке удаётся держать 296 запросов в секунду, при кешировании в буфере — уже 1675. Разница — более чем в пять раз🙂 Вот это я понимаю — полезное дополнение.

Net — сеть и Unix-сокеты

Модуль net (бывший tcp), теперь предоставляет возможность работы с Unix-сокетами. В основном код работает так же как раньше, только событие receive поменялось на data — я заметил это только сегодня, при апдейте limestone для версии 0.1.90. Видимо, это изменение было в одном из предыдущих релизов.

Вообще сетевые модули стали более однородными, что ли. Теперь их API действительно похоже, это удобно. Соединение теперь возвращает поток, у всех потоков единое API, они разделены на односторонние (только чтение) и двусторонние (чтение-запись). Это удобно.

Кстати, старые модули всё ещё доступны как tcp_old и http_old.

Сайт

Документация на nodejs.org теперь похоже генерится автоматически с помощью Ronn.

Другие изменения

  • Udns заменён на c-ares, DNS модуль должен работать лучше
  • V8 обновлён до версии 2.2.X
  • В группе говорят что на многих задачах работает быстрее и потребляет меньше памяти

Заключение

В целом — достаточно важный релиз, сигнализирующий близкий API Freeze (назначенный на версию 0.2) и «устаканивание» внутренней структуры и API Node.js. Унификация потоков также выглядит очень привлекательно, буферы тоже найдут своё применение. С точки зрения апдейта кода всё довольно просто, я перевёл на 0.1.90 limestone, веб-паука и сейчас занимаюсь переводом CouchDB.

Будем надеяться что версия 0.2 уже не за горами. «Болтанка» в API, я думаю, удерживала достаточно многих разработчиков от участия в проекте.

Добавить комментарий

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: