+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новини

Відбувся реліз Node.js 13.0 - платформи для виконання мережевих додатків мовою JavaScript

Відбувся реліз Node.js 13.0 - платформи для виконання мережевих програм мовою JavaScript

Доступний реліз Node.js 13.0, платформи для виконання мережевих додатків мовою JavaScript. Одночасно завершено стабілізацію минулої гілки Node.js 12.x, яка переведена до категорії випусків із тривалим терміном підтримки, оновлення для яких випускаються протягом 4 років. Підтримка минулої LTS-гілки Node.js 10.0 триватиме до квітня 2021 року, а позаминулої LTS-гілки 8.0 до січня 2020 року.

Основні покращення:

  • Рух V8 оновлено до версії 7.8, в якій задіяні нові методи оптимізації продуктивності, покращено деструктуризацію об'єктів, зменшено споживання пам'яті та скорочено час підготовки до виконання WebAssembly;
  • За замовчуванням включена повна підтримка інтернаціоналізації та Unicode на базі бібліотека ICU (International Components for Unicode), що дозволяє розробникам писати код, що підтримує роботу з різними мовами та локалями. Модуль full-icu тепер встановлено за замовчуванням;
  • Стабілізовано API Workers Threads, що дозволяє створювати багатопоточні цикли обробки подій (event loop). Реалізація заснована на модулі worker_threads, що дозволяє запускати JavaScript-код у кілька паралельних потоків. Стабільна підтримка API Workers Threads також бекепортована до LTS-гілки Node.js 12.x;
  • Підвищено вимоги до платформ. Для складання тепер потрібно як мінімум macOS 10.11 (потрібно Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Покращена підтримка Python 3. За наявності в системі Python 2 і Python 3, як і раніше, використовується Python 2, але додано можливість складання за наявності в системі тільки Python 3;
  • Видалено стару реалізацію HTTP-парсера ("--http-parser=legacy"). Видалені або переведені в розряд застарілих виклики та властивості FSWatcher.prototype.start(), ChildProcess._channel, метод open() в об'єктах ReadStream та WriteStream, request.connection, response.connection, module.createRequireFromPath();
  • Слідом вийшло оновлення 13.0.1, в якому по гарячих слідах усунуто кілька помилок. У тому числі вирішена проблема з виведенням у npm 6.12.0 попередження про використання версії, що не підтримується.

Нагадаємо, що платформа Node.js може бути використана як для серверного супроводу роботи Web-додатків, так і для створення звичайних клієнтських та серверних мережних програм. Для розширення функціональності додатків для Node.js підготовлено велику колекцію модулів, в якій можна знайти модулі з реалізацією серверів та клієнтів 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, яка є надбудовою над libev в системах Unix і над IOCP в Windows. Для створення пулу потоків (thread pool) задіяна бібліотека libeio, для виконання DNS-запитів у неблокуючому режимі інтегрований c-ares. Всі системні виклики, що викликають блокування, виконуються всередині пулу потоків і потім, як і обробники сигналів, передають результат своєї роботи через неіменований канал (pipe). Виконання JavaScript-коду забезпечується через задіяння розробленого компанією Google двигуна V8 (додатково Microsoft розвиває варіант Node.js з двигуном Chakra-Core).

За своєю суттю Node.js схожий на фреймворки Perl AnyEvent, Ruby Event Machine, Python Twisted і реалізацію подій у Tcl, але цикл обробки подій (event loop) в Node.js прихований від розробника і нагадує обробку подій у web працює в браузері. При написанні програм для node.js необхідно враховувати специфіку подієво-орієнтованого програмування, наприклад, замість виконання "var result = db.query("select..");" з очікуванням завершення роботи та подальшою обробкою результатів, в Node.js використовує принцип асинхронного виконання, тобто код трансформується в "db.query("select..", function ( result) {обробка результату});", при якому керування миттєво перейде до подальшого коду, а результат запиту буде оброблений у міру надходження даних. .

Інші новини

Найкраща ціна