The OpenNET Project / Index page

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

Доступна серверная JavaScript-платформа Node.js 19.0

19.10.2022 08:28

Состоялся релиз Node.js 19.0, платформы для выполнения сетевых приложений на языке JavaScript. Node.js 19 отнесён к ветке с обычным сроком поддержки, обновления для которой будут выпускаться до июня 2023 года. В ближайшие дни будет завершена стабилизация ветки Node.js 18, которая получит статус LTS и будет поддерживаться до апреля 2025 года. Сопровождение прошлой LTS-ветки Node.js 16.0 продлится до сентября 2023 года, а позапрошлой LTS-ветки 14.0 до апреля 2023 года.

Основные улучшения:

  • Движок V8 обновлён до версии 10.7, применяемой в Chromium 107. Из изменений в движке по сравнению с веткой Node.js 18 отмечается реализация третьей версии API Intl.NumberFormat, в которой добавлены новые функции formatRange(), formatRangeToParts() и selectRange(), группировка множеств, новые опции округления и задания точности, возможность интерпретации строк как десятичных чисел. Также обновлены входящие в комплект зависимости llhttp 8.1.0 и npm 8.19.2.
  • Предложена экспериментальная команда "node --watch" с реализацией режима наблюдения, обеспечивающего перезапуск процесса при изменении импортированного файла (например, в случае выполнения "node --watch index.js" процесс будет автоматически перезапущен при изменении index.js).
  • Для всех исходящих HTTP/HTTPS-соединений включена поддержка механизма HTTP 1.1 Keep-Alive, оставляющего соединение определённое время открытым для обработки в рамках одного соединения нескольких HTTP-запросов. Предполагается, что применение Keep-Alive позволит повысить пропускную способность и производительность. По умолчанию таймаут удержания соединения открытым выставлен в 5 секунд. В реализацию HTTP-клиента добавлена поддержка разбора HTTP-заголовка Keep-Alive в ответах сервера, а в реализацию HTTP-сервера Node.js добавлено автоматическое отсоединение неактивных клиентов, использующих Keep-Alive.
  • В разряд стабильных переведён API WebCrypto, за исключением функций, использующих алгоритмы Ed25519, Ed448, X25519 и X448. Для доступа к модулю WebCrypto теперь можно использовать globalThis.crypto или require('node:crypto').webcrypto.
  • Удалена поддержка инструментариев трассировки DTrace, SystemTap и ETW (Event Tracing for Windows), поддержание которых признано нецелесообразным из-за сложности сопровождения в актуальном виде при отсутствии должного плана их поддержки.

Платформа 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) {обработка результата});", при котором управление мгновенно перейдёт к дальнейшему коду, а результат запроса будет обработан по мере поступления данных.

  1. Главная ссылка к новости (https://nodejs.org/en/blog/ann...)
  2. OpenNews: Доступна серверная JavaScript-платформа Node.js 18.0
  3. OpenNews: Атака на Node.js через манипуляции с прототипами объектов JavaScript
  4. OpenNews: Уязвимость в http2-модуле из состава Node.js
  5. OpenNews: Автор Node.js представил защищённую JavaScript-платформу Deno 1.0
  6. OpenNews: В рамках проекта PurpleJS развивается альтернатива Node.js, работающая поверх JVM
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/57938-node.js
Ключевые слова: node.js, javascript
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (82) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, анонимус (??), 08:42, 19/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Хватит вспоминать python twisted, это депрекейтед либа. asyncio уже давно стала стандартом
     
     
  • 2.20, _hide_ (ok), 09:49, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    У Вас, видать, проекты на пару месяцев, не дольше...
     
     
  • 3.33, Аноним (33), 11:23, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Так и есть, давно уж культивируется трёхнедельная живучесть релизов, а потом всё к xepaм ломают.
     
  • 3.35, Chlen22sm (?), 11:34, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > python
    > проекты

    Опохмелись. Пайтон это замена башу и перлу.

     
     
  • 4.44, _hide_ (ok), 12:49, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Пайтон это замена башу и перлу.

    А большой микроскоп замена хорошей кувалде. Я понимаю, что пишет малограмотный тролль, но не смог пройти мимо.

     
  • 2.117, rustian (?), 13:06, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    ну и перл хватит вспоминать, это депрекейтед язык. А вот про golang, elixir и rust+tokio.rs забыли.
     

  • 1.5, Аноним (5), 08:54, 19/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Кажется мне, что слово «платформа» тут надо брать в кавычки, ЕВПОЧЯ.
     
     
  • 2.15, Аноним (15), 09:29, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А как надо писать язык программирования? Но это же просто джаваскрипт. Значит платформа.
     
     
  • 3.82, Аноним (82), 19:35, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Язык программирования должен быть простым, быстрым, надежным и безопасным, как Си.
    Джаваскрипт, никаким языком программирования не является.
     
     
  • 4.84, Аноним (84), 19:52, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Язык программирования должен быть простым, быстрым, надежным и безопасным, как Раст.

    Поправил, не благодари

     
     
  • 5.110, ttttt (?), 22:14, 20/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Зачеркни слово раст, и тогда норм.
     

  • 1.6, Аноним (84), 09:00, 19/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –9 +/
    И зачем нужно это когда есть божественное Deno написанное на расте?
     
     
  • 2.10, Аноним (10), 09:26, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Node.js - зрелая состоявшаяся платформа с пакетами на все случаи жизни.
    Deno - васяноподелие (да, его пилит автор ноды, но прямо сейчас это именно васяноподелие).

    Да и зачем раст? Мало тебе, что V8 жрет как не в себя, так с растом память вообще будет течь как водопад.

     
     
  • 3.74, Аноним (-), 16:04, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Node.js - зрелая состоявшаяся платформа

    Это плюс, два раза переписанный обвес как пример хттп парсер который вообще на столько хорош что стал отдельным проектом.

    > с пакетами на все случаи жизни.Deno - васяноподелие

    Если бы можно было вот это вот все в одну кучку и где-то закопать. Афтор погнался за модой, все потекло. Надо было v8 на расте переписать, вот это был бы успех.

     
  • 3.88, darkshvein (ok), 22:15, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Node.js - зрелая состоявшаяся платформа с пакетами на все случаи жизни.

    ну так бы и написали, что квик-бейсик конструктор для несостоявшихся в программистов

     
  • 2.13, Аноним (-), 09:28, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    то, что написано на rust, годится только для обожания и поклонения,но для использования непригодно.
     
     
  • 3.23, анонимус (??), 09:55, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Попробуйте попользоваться утилитами rg, fd, bat. Обратно не хочется. gitui тоже довольно неплох, но его еще полируют
     
     
  • 4.34, Аноним (33), 11:26, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    обожаю набор букв... так всё понятно!
     
     
  • 5.40, анонимус (??), 11:40, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    pwd, wc, ls, ps вас тоже пугает? любой поисковик спокойно все найдет если добавить еще rust. ну либо на crates.io сразу ищите
     
     
  • 6.62, anonnimb (?), 14:43, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ls, pwd - это всё понятные и логичные сокращения от предназначения утилиты. не то что ржаво-наркоманские... fd - это оказывается find. а rg - это grep.
    как это можно в здравом уме использовать - хз. да шустро работать стало подозреваю тупо за счёт параллелизьму. так что нах ваши растоподелия, если даже в названии разберётся только кучка альтернативно-одарённых детей, а взрослый человек будет в некотором замешательстве лол
     
     
  • 7.111, ttttt (?), 22:18, 20/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, а как только стартуем на неочень мощной борде, раст скукоживается, и оказывается что С поделие все еще шустрее и жрет меньше.
     
  • 4.57, Ыыыыыы (?), 14:39, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нахера мне эти утилиты или вспаивй рипгреп если меня обычный устраивает? Может растоманам перестать уже переписывать существующий рабочий код и пора начать делать что-то своё? Ах да, они не могут и поэтому лезут в ядро линукса
     
  • 4.85, Аноним (-), 20:21, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ты еще exa вспомни.

    [dependencies]
    ansi_term = "0.12"
    glob = "0.3"
    lazy_static = "1.3"
    libc = "0.2"
    locale = "0.2"
    log = "0.4"
    natord = "1.0"
    num_cpus = "1.10"
    number_prefix = "0.4"
    scoped_threadpool = "0.1"
    term_grid = "0.2.0"
    terminal_size = "0.1.16"
    unicode-width = "0.1"
    users = "0.11"
    zoneinfo_compiled = "0.5.1"


    Не ну я понимаю так компилить вечером лс на гигабитном инет канале с гигабитной проксей на панамскую карточку оформленную, на компе с терабайтными винтами и гигабайтами памяти. А чё обычным трудящимся делать, буржуий ты наш  ?

     
  • 3.24, анонимус (??), 10:00, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Из библиотечного кода например orjson для работы с json из питона быстрее аналогов на с и с++. Так что ваши слова неправда
     
     
  • 4.27, Аноним (27), 10:06, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    И почему ей никто не пользуется? Да потому что тем кому нужна скорость, не пользуются питоном, ор.
     
     
  • 5.32, анонимус (??), 11:07, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >И почему ей никто не пользуется?

    Очень многие пользуются. На питоне как раз удобно склеивать вот такие быстрые либы

     
     
  • 6.41, Аноним (41), 12:09, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Мало кто ей пользуется.
     
     
  • 7.97, Аноним (97), 02:37, 20/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    откуда инфа?
     
  • 2.19, birkoff (?), 09:39, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    скорее быстроразвивающаяся bun.sh написанная на Zig
     
     
  • 3.25, Аноним (25), 10:03, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    ... у которого список того что он не умеет гораздо больше того что умеет((
     
     
  • 4.28, Аноним (27), 10:07, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это список сделать в будущем, так что когда Zig заумеет, то ух полетит.
     
     
  • 5.60, Ыыыыыы (?), 14:41, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вниз полетит
     
  • 4.73, Аноним (-), 15:54, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это неправда.
     
  • 2.66, истина в последней инстанции (?), 14:55, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Deno написанное на расте

    Которое в стадии препрепрпре альфы. Не работает, течёт и падает?

    попа скрипт с его нодой то ещё г конечно, но вам растоблюдам даже до этого как муравью до луны

     
     
  • 3.83, Варенье (?), 19:42, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Откровенно говоря, и нода тоже течёт ещё как. Вон, в Jest недавно добавили оптимизацию использования RAM. Нет, оно не уменьшает потребление RAM. Оно просто отстреливает воркеров, которые вышли за лимит. И да, 24Гб RAM на прохождение 500 тест-сьютов — это, как мне кажется — очень много.
     
  • 2.86, Анно Домини (?), 20:29, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И зачем нужно это когда есть божественный Bun написанный на зиге?
     

  • 1.8, Аноним (15), 09:05, 19/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    Единственная нормальная платформа для разработки любых приложений.
     
  • 1.9, Аноним (9), 09:09, 19/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    что еще кто то не свалил с этого на go?
     
     
     
    Часть нити удалена модератором

  • 3.22, Аноним (10), 09:55, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > дешевле и больше

    Откуда это мнение? Везде, где работал, были большие трудности найти веб-разраба. Вроде смотришь hh и телегу - соискателей пруд пруди. А до реального собеседования добирается лишь один в месяц. А насчет зарплат тоже спорно, JS/TS теперь на одном уровне с какой-нибудь Enterprise Java™ и уже давно обогнал пихтон.

     
     
  • 4.52, Аноним (52), 14:03, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Они живут в своём манямирке.
     
  • 4.99, Chlen22sm (?), 04:41, 20/10/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Везде, где работал, были большие трудности найти веб-разраба.

    Видимо требования как к сеньору, девопсу и тимлиду одновременно, а зарплата как у стажёра недоджуна.

     
     
  • 5.118, cool29 (?), 05:16, 08/11/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не. Просто сложность разработки очень высокая (я про реальный фронт, например на стеке react). Если ты реально не владеешь стэком минимум на уровне мидла, то ты полностью бесполезен. Вот и ищут все от мидлов и выше. А они все уже работают на ЗП от $3000 ))
     
  • 2.26, Онанистмус (?), 10:05, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Зачем выбирать go когда есть C#
     
     
  • 3.45, Железный дрын (?), 12:50, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хаха ты ещё про пхп вспомни
     

  • 1.11, Хухрымухры (ok), 09:26, 19/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Даже создатель разочеровался в собственном детище.
     
     
  • 2.14, Аноним (15), 09:28, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что идеала не существует. Но node.js лучше что он смог высрть
     
     
  • 3.18, Аноним (33), 09:37, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > node.js лучше что он смог высрть

    Если для мух - то да.

     
     
  • 4.29, Аноним (27), 10:08, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если у автора целевая аудитория мухи, то он хорош.
     
     
  • 5.37, InuYasha (??), 11:37, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А если это хитрый план Пахома (тм) - "мухи прилетят, и мы их убьём!"
     
  • 2.16, Аноним (10), 09:31, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Теперь ждем, когда он разочаруется в deno.
     
  • 2.61, Ыыыыыы (?), 14:43, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Создатель инфантильный дурачок. Как он свалили как раз все стабилизировали, а теперь он выкатил новое уг
     
  • 2.80, Аноним (82), 19:29, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Это не мешает формошлепам "писать" свои "программные продукты" на фреймворках фреймворков и прочем блоате, от которого у нормальных сишников волосы на одном месте дыбом встают.
     

  • 1.43, Igraine (ok), 12:49, 19/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >db.query("select..", function (result) {обработка результата});

    Хватит уже травмировать местных экспертов каллбэками, Promise и async/await почти 10 лет назад появились
    const result = await db.query("select ...");
    // Обработка результата

    В JavaScript замечательное асинхронное программирование, пользуйтесь

     
     
  • 2.46, Igraine (ok), 12:54, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Что опять придут свидетели 10 мьютоксов на Си и начнут очередные попытки самоутверждения в собственных глазах.
     
     
  • 3.72, Без аргументов (?), 15:51, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    когда тебе старому пердуну поставят кардиостимулятор на JS, будет хорошо
     
     
  • 4.76, Igraine (ok), 17:59, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    "Управление по контролю за продуктами питания и лекарствами США объявило об отзыве 465 тысяч кардиостимуляторов компании Abbott для установки обновления безопасности. Необходимость установки обновления безопасности связана с выявленными уязвимостями в прошивке таких устройств."

    Сразу ясно что это js-человекообразные добрались до устройств и недали экспертам-программистам-сишникам с опеннет написать прошивку без ошибок.

     
     
  • 5.90, Без аргументов (?), 23:55, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    ОК, содержание ошибки могло быть не в языке, а в пароле 1234. Всего лишь один стимулятор. А что сделали такие как вы? Пустой файл не имеет уязвимостей в этом вы правы.
     
     
  • 6.101, Igraine (ok), 08:04, 20/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я честно дописываю мобильное приложение, фронтэнд и бэкэнд биллинга за другими людьми которые уволились давно, за еду.
    А что сделали вы?
    Покажите свой код.
    Хелло ворлд на си и мигание светодиодами на микроконтроллере не считаются.
     
     
  • 7.105, Без аргументов (?), 21:22, 20/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я работал в крупнейшем после Ртк интернет-провайдыре Подмск в 2014 году разработчиком биллинга PL/SQL. На крестах еще раньше. А щаз я гофер (после Си просто нектар), и код не опенсорс. Зря про МК, я там дофига че знаю, M0+ кортех по крайней мере от и до.
     
  • 7.106, Без аргументов (?), 21:23, 20/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    За еду зря вы это. Мы устроили бунт, кинув 4 заявы на увол, и получили всё, что попросили.
     
  • 7.107, Без аргументов (?), 21:25, 20/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я делаю бэк, но когда касаюсь фронта, который нельзя без вебпаков и node_modules, я просто с ума схожу
     
  • 7.114, Michael Shigorin (ok), 08:56, 21/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Покажите свой код.

    Вы забыли ссылку на свой.

     
  • 5.91, Без аргументов (?), 23:56, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А то. Node JS выполняется прямо на ПЛИС. Научити, как вы это делаете?
     
     
  • 6.100, Igraine (ok), 07:58, 20/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Примерно вот так и делается https://github.com/gateware-ts/gateware-ts
     
  • 5.92, Без аргументов (?), 23:57, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    JS это не тупой язык, он сложнее, чем Си, ближе к Си++. И если в Си указатели -- то в JS (без TS) вообще беспредел и анархия во всём (зато указателей нет).
     
     
  • 6.94, Аноним (-), 00:17, 20/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, Си простой, вот ты говоришь ему int i = 1; и на выхлопе мы формируем стекфрейм у ставим в него значение. В жабаскрипте байткод делает без излишеств ровно тоже самое лишь только хранилище у нас куча с вытекающей немного усложненной адрессацией.
    А теперь домашнее задание - во сколько раз больше ненужной работы приходиться делать процессору для TS кода, раста ?

    Вот то то же, беспредел и анархия это какраз про ваше любимые тысы, русты и прочие поделки.

     
     
  • 7.108, Без аргументов (?), 21:26, 20/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Эээээ, я вообще-то в JS как раз неосиливатель, в отличие от другого.
     
  • 6.102, Igraine (ok), 08:26, 20/10/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    "Например, яркими примерами слабой системы типов являются те, что лежат в основе языков Си и C++. Их характерными атрибутами являются понятия приведения типов и каламбуров типизации. Эти операции поддерживаются на уровне компилятора и часто вызываются неявно"

    "Подобные ошибки выявляются ещё на этапе компиляции программы, тогда как при возможности неявного приведения практически любых типов друг к другу (как, например, в классическом языке Си) эти ошибки выявляются только при тестировании, причём не все и не сразу, что порой очень дорого обходится на этапе промышленной эксплуатации."

    1) В Си слабая типизация как и в js.
    Но можно переименованием расширения файла сделать typescript и получить строгую статическими типизацию.
    2) В js базарные арифметикие операции не вызывают неопределенного проведения. В Си за 50 лет так и не решили проблему с переполненим в знаковых типах. Оно возможно при любой операции, но невозможно с точки зрения стандарта https://habr.com/ru/company/pvs-studio/blog/439502/
    3) в js есть полноценные массивы, а не указатели на начало без размера (или почти без размера, С++ его где-то внутри все же хранит)
    4) в js есть полноценные строки с размером, а не указатель на начало ненастоящего массива char, где чтобы узнать длинну нужно по всей строке пройти.

     
     
  • 7.104, Igraine (ok), 15:59, 20/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    *В js базарные арифметикие операции
    Обычные арифметические операции, такие как сложение, вычитание, умножение, деление
     
  • 7.109, Без аргументов (?), 21:30, 20/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я не знал, что в стандарте Си нельзя переполнять. Я просто это всегда знаю. Суть в том, что надо знать, как оно работает, а остальное уже человеческий фактор.
     
     
  • 8.113, Michael Shigorin (ok), 08:55, 21/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А этот ребёнок тут полфорума заспамил ещё в теме про io_uring -- похоже, у нег... текст свёрнут, показать
     
  • 6.103, Аноним (-), 08:49, 20/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    свидетели типизации подъехали . рукалицосразмаху.жпг
     
  • 2.56, Аноним (56), 14:10, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >const result = await db.query("select ...");

    try ... catch не забудь ещё.

     
     
  • 3.63, Ыыыыыы (?), 14:45, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Очевидно, что этот кол выполнено честя в обработчике запроса ошибка в котором будет поймана и обработана, поэтому нафигачить явно их обрабатывать если это не часть логики?
     
     
  • 4.65, Аноним (56), 14:52, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    ) Отличная иллюстрация того, почему калбеки это идеальный вариант для ЦА нодежс.
     
     
     
    Часть нити удалена модератором

  • 6.69, Аноним (69), 15:23, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    javascript - это не java
     
  • 6.79, Аноним (79), 19:20, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Щас бы java от javascript не отличать, да, дед?
     
     
  • 7.81, Аноним (82), 19:30, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    И чем эти два интерпритируемых язычка отличаются?
     
     
  • 8.89, Аноним (97), 23:43, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    наверняка у тебя вся грудь в орденах искспертизы опеннет... текст свёрнут, показать
     
  • 8.95, anonym13 (?), 02:30, 20/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ха-ха-ха-ха Интерпритируемая Java Ух А ты хорош... текст свёрнут, показать
     
     
  • 9.115, Michael Shigorin (ok), 09:00, 21/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Так-то и openjdk умеет быть интерпретатором, и js вон некоторые ради super duper... текст свёрнут, показать
     
  • 3.67, Igraine (ok), 15:05, 19/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Именно что async/await замечательно интегрируется с try/catch. Async функция может приостанавливается, возобновляться несколько раз и при этом try/catch будет работать.

    Только он сам по себе необязательный, обработка ошибок может находиться на том promise который вернула async функция

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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