The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Выпуск серверной JavaScript-платформы Node.js 8.0"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск серверной JavaScript-платформы Node.js 8.0"  +/
Сообщение от opennews (??) on 31-Май-17, 12:30 
Представлен (https://nodejs.org/en/blog/release/v8.0.0/) релиз Node.js 8.0.0 (https://nodejs.org), платформы для выполнения высокопроизводительных сетевых приложений на языке JavaScript. Node.js 8.0 относится к веткам с длительным сроком поддержки, но данный статус будет присвоен только в октябре, после проведения стабилизации. Время выпуска обновлений для LTS-веток составляет 4 года. Поддержка прошлой LTS-ветки Node.js 6.0 продлится до 2020 года, а позапрошлой LTS-ветки 4.x  до апреля 2018 года. Поддержка промежуточной ветки Node.js 7.0 будет прекращена в июле 2017 года.


Из улучшений в Node.js 7.0 отмечается обновление движка V8  до версии 5.8, в которой реализована новая схема (https://www.opennet.ru/opennews/art.shtml?num=46051) компиляции, основанная на применении интерпретатора  Ignition (http://v8project.blogspot.ru/2016/08/firing-up-ignition-inte...) и JIT-компилятора Turbofan (https://www.opennet.ru/opennews/art.shtml?num=42577). Новая схема примечательна повышением  производительности выполнения JavaScript-приложений и снижением расхода памяти. В V8 5.8 также представлен новый подход к стабилизации  - ABI данной версии будет совместим с V8 5.9 и 6.0, что позволит реализовать обновление движка V8 до новых выпусков в рамках жизненного цикла ветки Node.js 8.x.

Среди других изменений:


-  Новый Node.js API (N-API (https://nodejs.org/api/n-api.html)), предоставляющий средства для создания нативных дополнений к Node.js, не привязанных к JavaScript runtime и рассматриваемых как часть Node.js. Для подобных дополнений будет обеспечен неизменный ABI, позволяющий без перекомпиляции использовать дополнение с разными версиями Node.js и даже с разными JavaScript-движками (V8 и Chakra-Core);
-  Добавлена экспериментальная поддержка асинхронных обработчиков (модуль async_hooks), через которые можно выполнять мониторинг операций в цикле обработки событий, отслеживать асинхронные запросы и полностью контролировать весь жизненный цикл работы приложения;

-  В
классе URL (https://nodejs.org/api/url.html#url_the_whatwg_url_api) обеспечена полная поддержка стандарта WHATWG (https://url.spec.whatwg.org/), определяющего требования к оформлению URL и API для разбора URL, представляемый браузерами;

-  В классе Buffer представлена (https://medium.com/@jasnell/node-js-buffer-api-changes-...) серия новых методов формирования буфера, таких как Buffer.alloc(), Buffer.allocUnsafe() и  Buffer.from(). При вызове устаревшего конструктура Buffer(num) программе теперь выделяется обнулённый блок памяти (ранее память не инициализировалась, что могло привести к утечке остаточных данных). Для выделения памяти без обнуления (заметно снижает производительность) предложен метод Buffer.allocUnsafe(num);

-  Представлен новый API util.promisify(), предоставляющий обвязку над штатным API на основе callback-вызовов для функций, возвращающих Promise;

-  В console.log(), console.error() и других методах модуля console  появилась возможность перенаправления вывода в stdout, stderr и неименованные каналы. Ошибки в процессе вывода теперь игнорируются, а для возвращения старого поведения (выход из программы) в конструктор Console добавлена опция ignoreErrors;

-  Добавлена опция "--redirect-warnings={file}" и переменная окружения "NODE_REDIRECT_WARNINGS={file}" при помощи которых можно перенаправить в файл предупреждения, например о вызове устаревших возможностей, раньше выводимые в stderr;
-  В Stream API добавлены новые способы завершения или обрыва потока. Каждый экземпляр объекта теперь включает метод
destroy(), реализация которого может быть изменена через создание метода _destroy();

-  Вместо устаревшего CLI-отладчика в состав runtime добавлен  инструмент node-inspect. Добавлен экспериментальный  JavaScript API для инспектирования работы процессов Node.js  с использованием протокола Inspector;

-  В состав включён новый выпуск пакетного менеджера npm  5.0.0.

Напомним, что платформа Node.js может быть использована как для серверного сопровождения работы Web-приложений, так и для создания обычных клиентских и серверных сетевых программ. Для расширения функциональности приложений для Node.js подготовлена большая коллекция модулей (https://www.npmjs.com/), в которой можно найти модули с  реализацией  серверов и клиентов HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, модули для интеграции с различными web-фреймворками, обработчики WebSocket и Ajax, коннекторы к СУБД (MySQL, PostgreSQL, SQLite, MongoDB), шаблонизаторы, CSS-движки, реализации криптоалгоритмов и систем авторизации (OAuth), XML-парсеры.

Для обеспечения обработки большого числа параллельных запросов Node.js задействует асинхронную модель запуска кода, основанную на обработке событий в неблокирующем режиме и определении callback-обработчиков. В качестве способов мультиплексирования соединений поддерживаются такие методы, как epoll, kqueue, /dev/poll и select. Для мультиплексирования соединений используется библиотека libuv (https://github.com/joyent/libuv/), которая является надстройкой над libev (http://software.schmorp.de/pkg/libev.html) в системах Unix и над IOCP в Windows. Для создания пула потоков (thread pool) задействована библиотека libeio (http://software.schmorp.de/pkg/libeio.html), для выполнения DNS-запросов в неблокирующем режиме интегрирован c-ares (http://c-ares.haxx.se/). Все системные вызовы, вызывающие блокирование, выполняются внутри пула потоков и затем, как и обработчики сигналов, передают результат своей работы обратно через неименованный канал (pipe). Выполнение JavaScript-кода обеспечивается через задействование разработанного компанией Google движка V8 (http://code.google.com/p/v8/) (дополнительно Microsoft развивает вариант Node.js с движком Chakra-Core).  


По своей сути Node.js похож на фреймворки Perl AnyEvent (http://search.cpan.org/dist/AnyEvent/), Ruby Event Machine (http://rubyeventmachine.com/), Python Twisted (http://twistedmatrix.com/) и реализацию (http://wiki.tcl.tk/1527) событий в Tcl, но цикл обработки событий (event loop) в Node.js скрыт от разработчика и напоминает обработку событий в web-приложении, работающем в браузере. При написании приложений для node.js необходимо учитывать специфику событийно-ориентированного программирования, например, вместо выполнения "var result = db.query("select..");" с ожиданием завершения работы и последующей обработкой результатов, в Node.js использует принцип асинхронного выполнения, т.е. код трансформируется в "db.query("select..", function (result) {обработка результата});", при котором управление мгновенно перейдёт к дальнейшему коду, а результат запроса будет обработан по мере поступления данных. Ни одна функция в Node.js не должна напрямую выполнять операции ввода/вывода - для получения данных с диска, от другого процесса или из сети требуется установка callback-обработчика.


URL: https://nodejs.org/en/blog/release/v8.0.0/
Новость: http://www.opennet.ru/opennews/art.shtml?num=46630

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Выпуск серверной JavaScript-платформы Node.js 8.0"  –2 +/
Сообщение от Аноним (??) on 31-Май-17, 12:30 
Ждем экспертов
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Выпуск серверной JavaScript-платформы Node.js 8.0"  +8 +/
Сообщение от Эксперт on 31-Май-17, 13:10 
Вспомнити npm left pad!
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Выпуск серверной JavaScript-платформы Node.js 8.0"  +/
Сообщение от Аноним (??) on 31-Май-17, 13:59 
leftpad подъезжает в язык
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

17. "Выпуск серверной JavaScript-платформы Node.js 8.0"  +/
Сообщение от Вы забыли заполнить поле Name on 01-Июн-17, 00:32 
Он уже в core http://node.green/#ES2017-features-String-padding
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

3. "Выпуск серверной JavaScript-платформы Node.js 8.0"  –1 +/
Сообщение от Аноним (??) on 31-Май-17, 13:35 
должен быть http2 в этом релизе. А это значит поддержка сжатия в ссл соединениях
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Выпуск серверной JavaScript-платформы Node.js 8.0"  +/
Сообщение от anonimus on 31-Май-17, 15:45 
> Новый Node.js API (N-API), предоставляющий средства для создания нативных дополнений к Node.js

Шо, опять? У них традиция, каждый мажорный выпуск ломать совместимость нативных модулей. Опять все наработки человечества в трубу.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Выпуск серверной JavaScript-платформы Node.js 8.0"  +/
Сообщение от KonstantinB (ok) on 31-Май-17, 17:09 
ничего не сломали, оно параллельно сбоку
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

11. "Выпуск серверной JavaScript-платформы Node.js 8.0"  +1 +/
Сообщение от anonimus on 31-Май-17, 19:47 
Сейчас да, она пока еще не стабилизировалась. Но как только станет стабильной, у них не будет препятсвий отломать старое апи.

+ сейчас, возможно, появятся редакции на чакре. Короче, рано или поздно, придется выбросить все свои старые обертки над сишными либами и переписать их под новое апию

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

21. "Выпуск серверной JavaScript-платформы Node.js 8.0"  –1 +/
Сообщение от Аноним (??) on 01-Июн-17, 04:00 
Эта охрененная новость на самом деле. Писать биндинги без привязки к V8, без С++, с гарантией стабильного ABI между версиями
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

12. "Выпуск серверной JavaScript-платформы Node.js 8.0"  –1 +/
Сообщение от Аноним (??) on 31-Май-17, 20:01 
Клеща тем наконец то импорты es2015 запилят?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

16. "Выпуск серверной JavaScript-платформы Node.js 8.0"  +/
Сообщение от juvvidildo on 31-Май-17, 23:09 
Когда в стандарте будет описана работа импортов
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

18. "Выпуск серверной JavaScript-платформы Node.js 8.0"  –1 +/
Сообщение от dahl on 01-Июн-17, 00:32 
зачем? там уже есть и import (require) и экспорт (module.export)
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

22. "Выпуск серверной JavaScript-платформы Node.js 8.0"  +2 +/
Сообщение от Аноним (??) on 01-Июн-17, 04:35 
Напрочь отсутствует default-символ, так что модуль, "module.exports-ящий" какие-нибудь функции, экспортит заодно и объект с прототипом Object. Также вводится некросс-"окруженческая" "глобальная" переменная require. Также еще с удивлением можно обнаружить, что require, exports, module и __dirname -- на самом деле не глобальные переменные, а аргументы функции, в которую неявно и обычной конкатенацией оборачивается любой nodejs-ный файл, так что внутри любого nodejs-ного "модуля" доступен arguments, который, на минуточку, не должен быть доступен вне функции.


sh-4.3$ cat main.js
console.log(arguments.callee.toString());
sh-4.3$ node main.js
function (exports, require, module, __filename, __dirname) {
console.log(arguments.callee.toString());

}


Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

23. "Выпуск серверной JavaScript-платформы Node.js 8.0"  +1 +/
Сообщение от ThatAtGuy on 01-Июн-17, 22:05 
Так описан же уже стандарт? Ещё в 2015 описан.
Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

20. "Выпуск серверной JavaScript-платформы Node.js 8.0"  –1 +/
Сообщение от _Vitaly_ (ok) on 01-Июн-17, 02:46 
Там пока пятый npm очень бажный. Стоит подождать.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

24. "Выпуск серверной JavaScript-платформы Node.js 8.0"  +/
Сообщение от ThatAtGuy on 01-Июн-17, 22:06 
Можно подробнее?
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

25. "Выпуск серверной JavaScript-платформы Node.js 8.0"  –1 +/
Сообщение от _Vitaly_ (ok) on 01-Июн-17, 22:17 
> Можно подробнее?

Много ошибок при установке зависимостей. В трекер npm уже что-то зарепортили. У меня на большом проекте npm install не отработал. Пока откатился обратно на седьмую ноду.

С большими релизами всегда так. Через 2-4 недели вычистят.

Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру