The OpenNET Project / Index page

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

Основатель QEMU и FFmpeg опубликовал JavaScript-движок QuickJS

11.07.2019 23:10

Французский математик Фабрис Беллар (Fabrice Bellard), основавший в свое время проекты QEMU и FFmpeg, а также создавший самую быструю формулу вычисления числа Пи и разработавший формат изображений BPG, опубликовал первый выпуск нового JavaScript-движка QuickJS. Движок отличается компактностью и ориентирован на встраивание в другие системы. Код проекта написан на языке Си и распространяется под лицензией MIT. Также доступна сборка движка, скомпилированная в WebAssembly при помощи Emscripten и пригодная для выполнения в браузерах.

Реализация JavaScript поддерживает спецификацию ES2019, включая модули, асинхронные генераторы и прокси. Опционально поддерживаются нестандартные математические расширения для JavaScript, такие как типы BigInt и BigFloat, а также перегрузка операторов. По производительности QuickJS существенно превосходит имеющиеся аналоги, например, в тесте bench-v8 опережает движок XS на 35%, DukTape более чем в два раза, JerryScript в три раза, а MuJS в семь раз.

Кроме библиотеки для встраивания движка в приложения проектом также предлагается интерпретатор qjs, который можно использовать для запуска JavaScript-кода из командной строки. Более того, доступен компилятор qjsc, способный на выходе генерировать пригодные для обособленного запуска исполняемые файлы, не требующие внешних зависимостей.

Основные особенности:

  • Компактность и простота встраивания в другие проекты. Код включает лишь несколько файлов на языке Си, не требующих для сборки внешних зависимостей. Скомпилированное простейшее приложение занимает около 190 Кб;
  • Очень высокая производительность и малое время запуска. Прохождение 56 тысяч тестов на совместимость с ECMAScript занимает около 100 секунд при выполнении на одном ядре обычного настольного ПК. Инициализация runtime занимает менее 300 микросекунд;
  • Почти полная поддержка спецификации ES2019 и полная поддержка приложения "B", определяющего компоненты для совместимости со старыми web-приложениями;
  • Полное прохождение всех тестов из набора ECMAScript Test Suite;
  • Поддержка компиляции кода на языке Javascript в исполняемые файлы без внешних зависимостей;
  • Сборщик мусора на основе подсчёта ссылок без цикличного выполнения чистки, позволивший добиться предсказуемого поведения и снижения потребления памяти;
  • Набор расширений для математических вычислений на языке JavaScript;
  • Оболочка для выполнения кода в режиме командной строки, поддерживающая контекстную подсветку кода;
  • Компактная стандартная библиотека с обвязками над Си-библиотекой.

Проектом также развиваются три сопутствующие Си-библиотеки, задействованные в QuickJS и пригодные для отдельного применения:

  • libregexp - быстрая реализация регулярных выражений, полностью совместимых со спецификацией Javascript ES 2019;
  • libunicode - компактная библиотека для работы с Unicode;
  • libbf - реализация операций с плавающей запятой произвольной точности и трансцендентных функций с точным округлением.


  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Выпуск эмулятора QEMU 4.0
  3. OpenNews: Основатель QEMU и FFmpeg развивает систему синхронизации файлов VFsync
  4. OpenNews: Создатель QEMU и FFmpeg предложил новый формат изображений BPG
  5. OpenNews: В написанном на JavaScript эмуляторе ПК появилась поддержка постоянного хранилища
  6. OpenNews: На языке JavaScript написан полноценный эмулятор ПК, способный загрузить Linux
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/51079-bellard
Ключевые слова: bellard, quickjs, javascript
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (163) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, rshadow (ok), 23:16, 11/07/2019 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –31 +/
     

     ....ответы скрыты (8)

  • 1.3, менан (?), 23:17, 11/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Класс, со временем прикрутят JIT, и можно будет создать убийцу Electron!
     
     
  • 2.77, bw (ok), 10:06, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Для Electron ещё нужны DOM, CSS, рендер и т.д., так что всё равно те же 100Mb получатся.
     
     
  • 3.124, Аноним (124), 18:11, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    С таким грамотным подходом получится сильно меньше чем 100 Мб. Opera когда-то была живым примером. Ничего не мешает повторить тот же опыт, были бы заинтересованные. Корпорациям, очевидно, совершенно по барабану. И это печалит.
     
     
  • 4.139, Аноним (139), 04:12, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    У opera был чудовищный код с кучей костылей и if'ов под каждый случай, это не лучший пример.
     
     
  • 5.149, Аноним (149), 11:18, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Но оно работало. И весило, и кушало при этом мало. В вопросах оптимизации не до красоты кода. Да вы в исходник сабжа загляните - сплошная математика, но, как видно, обходит другие реализации по всем параметрам.
     
  • 4.140, Аноним (140), 06:03, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    С каким грамотным? Разработчик смог сделать урезанную и медленную реализацию js для встраивания. Ок.
    Но причем здесь электрон? Сделать медленную и урезанную реализацию браузера, которой невозможно будет пользоваться из-за низкой производительности...
     
     
  • 5.148, Аноним (149), 11:15, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну, судя по тестам, получилось лучше всех из тех, что реалистично написать 1-2 людям, конечно. Если поставить его архитектором и мейнтейнером группы программеров, уверен, что порвет остальные реализации. И я сильно сомневаюсь в том, что V8 - достижимый предел по оптимизациям. Можно быть быстрым и при меньшем потреблении ресурсов.
     

  • 1.4, Аноним (4), 23:20, 11/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +11 +/
    перезагрузка оператора это когда он завис что ли?
     
     
  • 2.45, foi (?), 04:59, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Речь про ПЕРЕОПРЕДЕЛЕНИЕ ИМЕНИ
     
     
  • 3.46, Vasya777rus (?), 05:33, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Не, это перегрузка
     
  • 3.59, Аноним (59), 08:23, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Не надо тут капсом писать, мы знаем что такое перегрузка операторов и функций, в статье написано "перезагрузка".
     
     
  • 4.60, Andrey Mitrofanov_N0 (??), 08:44, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –6 +/
    >что такое перегрузка операторов и
    >написано "перезагрузка".

    Б[уха]дь[I] . [/I]

    Поднимем же стакан светлую память издательства "Мир" и профильной академии...   Академики работали, переводили забугорное, _словари_ терминов столбили... для нас,  немытых пейзан.

    Теперь только :/ собственные потуги.   #пичально-я-гляжу-на #пятница #опять-нет-повода-не...  #о-терминах

     
  • 2.72, hiveliberty (ok), 09:55, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Написано ведь в новости, "перегрузка", а не "перезагрузка"..
     

  • 1.5, Урри (?), 23:20, 11/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –16 +/
    Ну вот и поправил бы сразу язык, выкинув из него все говно. Может и получилась бы конфетка.

    А так - вся производительность тут же умрет под новым провоцируемым языком говнокодом.

    [] == ![] // true
    [1, 2, 3] + [4, 5, 6] // '1,2,34,5,6'
    [,,,].length // 3

    Больше граблей богу граблей! Искривим мозг с рождения, не дай боже люди начнут писать прямой код..

     
     
  • 2.11, Аноним (11), 23:32, 11/07/2019 [^] [^^] [^^^] [ответить]  
  • +12 +/
    > [] == ![] // true
    > [1, 2, 3] + [4, 5, 6] // '1,2,34,5,6'
    > [,,,].length // 3

    Сколько бы работодателей ни сменил, нигде не видел этих теоретических примеров. Зато я их видел в статьях типа "смотрите какая приколюха".

    Но! Ты можешь меня легко опровергнуть, приведя в каком-нибудь гитхабе реальные примеры твоим трем кускам кода. Ждем опровержений, так сказать. Язык же провоцирует, как ты говоришь? Следовательно, ожидаются не пара ссылок, а пара десятков ссылок, найденных __сходу__ и за 15 минут начиная с 00:00 MSK (даю тебе 30 минут на рефреш страницы и обнаружение моего ответа, сейчас 23:32 MSK).

     
     
  • 3.41, kiwinix (?), 02:15, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Да ну третий пример +- иногда используется, даже в PHP можно так запятые ставить.

    И ваще то, это фича, которую юзают! Кажись так можно пропускать переменные при деструктуризации

    const [first,,third] = [1,2,3];

    Но я не чекал, работает ли такой код, я с телефона

     
     
  • 4.61, Евгений (??), 08:48, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Чего???

    $ php -r 'var_dump([,,,]);'
    PHP Fatal error:  Cannot use empty array elements in arrays in Command line code on line 1

    Fatal error: Cannot use empty array elements in arrays in Command line code on line 1

     
  • 4.86, Аноним (86), 11:34, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    не, там прикол в другом - в третьем примере по логике ответ должен был быть 4
     
     
  • 5.95, Mmrnmhrm (?), 12:44, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Кому был должен? Ты выясни, чисто для себя, что такое .length - в данном случае он работает так, как ему положено
     
  • 5.117, mickvav (?), 16:35, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, там [1,2,] == [1,2] поэтому empty между последней запятой и закрывающей скобкой не создается.
    В python, кстати, тоже можно так писать - [1,2,] и это то же самое, что и [1,2]
     
  • 5.145, Аноним (140), 09:39, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Реально используемый код
    [
      "one",
      "two",
      "three",
    ]
    По Вашей логике там должен быть пустой элемент в конце. А по логике разработчиков языка запятая в конце позволяет избежать ошибки при добавлении последующих элементов. Например
    [
      "one",
      "two",
      "three"
      "four"
    ]
     
  • 4.93, Mmrnmhrm (?), 12:38, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Если с андроеда - ставишь termux и можно прогать )
     
  • 3.88, Урри (?), 11:46, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Так я об этом и написал: язык является таким скопищем граблей и ловушек, что приходится избегать(!!!!) базовых вещей.

    Вот еще:
    1 < 2 < 3 // -> true
    3 > 2 > 1 // -> false

    Отличный язык, да.

     
     
  • 4.91, Аноним (11), 12:21, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Отличный язык, да

    Иногда лучше жевать, чем говорить.

    $ cat ./fgh.c
    #include <stdio.h>
    void main () {
      printf("1 < 2 < 3: %d\n", 1 < 2 < 3);
      printf("3 > 2 > 1: %d\n", 3 > 2 > 1);
    }
    $ gcc ./fgh.c && ./a.out
    1 < 2 < 3: 1
    3 > 2 > 1: 0

     
     
  • 5.96, Аноним84701 (ok), 12:46, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > $ gcc ./fgh.c && ./a.out
    > 1 < 2 < 3: 1
    > 3 > 2 > 1: 0

    Как будто кто-то утверждал, что сишка в этом плане лучше (один только препроцессор чего стоит)
    Хотя там грабли все таки больше исторические, обратно-совместимые, сразу со встроенным грабле-детектором:



    % gcc -Wall fgh.c
    fgh.c:2:6: warning: return type of 'main' is not 'int' [-Wmain]
    void main () {
          ^~~~
    fgh.c: In function 'main':
    fgh.c:3:35: warning: comparisons like 'X<=Y<=Z' do not have their mathematical meaning [-Wparentheses]
       printf("1 < 2 < 3: %d\n", 1 < 2 < 3);
                                       ^
    fgh.c:4:35: warning: comparisons like 'X<=Y<=Z' do not have their mathematical meaning [-Wparentheses]
       printf("3 > 2 > 1: %d\n", 3 > 2 > 1);



     
     
  • 6.101, Аноним (11), 13:28, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Грабледетектор - это конечно хорошо, но если разработчик берет свои ожидания не из спецификации языка, а откуда-то из воздуха ("ну вроде очевидно же"), то он ошибся профессией. Какого результата он ожидал от [1,2,3] + [4,5,6]? Ожидал ли он результат в виде [1,2,3,4,5,6]? Или там должно было быть [5,7,9]? Или [1,2,3,[4,5,6]]? Или вовсе 21? А если бы операндами были массивы массивов, ожидал ли он сложение матриц?

    Толковый разработчик, не знающий языка, сразу должен заподозрить, что конструкция "массив + массив" может означать всё, что угодно, и поэтому он тут же пойдет прояснять поведение в спецификации языка. А бестолковый примет за ожидаемое поведение единственный вариант, до которого сумел додуматься.

     
     
  • 7.118, Урри (?), 16:39, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вы путаете разработчика и кодера, сиречь обезьяну, переводящую готовый алгоритм ... большой текст свёрнут, показать
     
     
  • 8.125, Аноним (11), 18:42, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Начнем и закончим с того, что толковый разработчик не допустит ситуации, что с... текст свёрнут, показать
     
     
  • 9.129, Урри (?), 22:49, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну вот видишь - все именно так, как я и говорил программист джаваскрипт ходит... текст свёрнут, показать
     
  • 5.122, Урри (?), 16:56, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Прекрасное подтверждение тезиса говноязык воспитывает говнопрограммеров Вы, я... большой текст свёрнут, показать
     
     
  • 6.126, Аноним (11), 18:58, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Погоди-ка Почему это Я не понимаю разницы, если это ТЫ раз за разом пишешь код,... большой текст свёрнут, показать
     
     
  • 7.130, Урри (?), 22:54, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Дорогой аноним. Почему бы вам не попытаться прочитать то, что написано выше? Или программирование на джаваскрипте заодно и отучает понимать то, что пишут другие? Впрочем, не удивлюсь - ведь то, что написано на джаваскрипте, чаще всего делает совсем не то, что подразумевается. Например, арифметическая сумма является конкатенацией строк, в то время как разница - действительно арифметическая разница.

    Но короче - я выше писал про разницу между булевыми и числовыми значениями, а так же о том, что ваш пример с С откровенно глуп (в контексте разговора), так как в С все является числом. В то время как в вашем любимом джаваскрипте это совершенно разные вещи.

     
     
  • 8.133, Аноним (133), 23:52, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Без минимум двух десятков ссылок на гитхаб твои примеры исключительно сферическо... текст свёрнут, показать
     
  • 2.17, Антон (??), 23:49, 11/07/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    в чем проблема запомнить несложные преобразования сложных типов к примитивам и условия в котором они неявно производятся?
    Да и достаточно использовать любой статический анализатор чтобы недопускать такие дурацкие вещи.
    Зато у js так же много плюсов.
     
     
  • 3.66, Mr. Beaver (?), 09:13, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тонюсенько набросил про "плюсы".  Молодец. А не взлетело потому что слишком уж тонко, эксперты опеннетика такую тоньшину не могут замечать
     
  • 3.119, Урри (?), 16:42, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В том, что это совершенно излишне.

    Ну вот представьте себе, что ваш язык не состоит не из "for", "repeat", "while", а из "+", "++" и "+++" соответственно.

    В чем, скажет очередной недопрограммер, проблема? Неужели нельзя запомнить один простой сивмол? Зато сколько плюсов...

     
  • 2.52, Аноним (52), 07:19, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это хорошо известное документированное поведение. Если оно для тебя в новинку - катись улицы мести!
     
     
  • 3.58, Аноним (57), 08:13, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что ж такое было в голове, у созавщего(их) _это_.
    Такой инструёмент не нужен.
     
     
  • 4.62, Andrey Mitrofanov_N0 (??), 08:52, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Что ж такое было в голове, у созавщего(их) _это_.
    > Такой инструёмент не нужен.

    Для метения улиц -- безусловно.  И для писания "ннужно"-камментариев.

    То есть Вас лично никто не заставляет.  "Можете не приходить."

    И Ваше мнение важно, не останавливайтесь, спасибо!

     
     
  • 5.131, Урри (?), 23:48, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Прекрасный язык:

    var arr = [1, 2, 3, 4, 5, 6, 7, 8];
      arr[-1] = "yo wazzzup";
      console.log(arr.length); // > 8
      console.log(arr[arr.indexOf(99)]); // log's > "yo wazzzup"

     
  • 2.81, e8e998feed8b11e88eb2f2801f1b9fd1 (?), 10:13, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    кто тебя заставляет такой код писать? JS никого не заставляет. Если хочешь такое писать изволь разобраться с приведением типов..
     
     
  • 3.120, Урри (?), 16:43, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Когда мне надо - я пишу на тайпскрипте. Но, к сожалению, нормальных средств дебага (как уже 1000 лет есть в С) для него пока не создали.
     
  • 2.89, Урри (?), 11:49, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну что я вижу по комментаторам - все пишут "тебя никто не заставляет по этим граблям прыгать" и "есть специально определенное практикой подмножество языка JS, на котором и надо писать, чтобы не проваливаться в ловушки и не получать граблями в лоб".

    Так вот я и написал - почему бы автору не выкинуть эти все грабли и выделить язык, на котором можно легко и приятно писать, не опасаясь, что из-за близости ящика ананасов и яблок весь склад не взорвется.

     
     
  • 3.90, vitalif (ok), 11:57, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не выделишь - язык с динамической типизацией и без приведения типов неудобен
     
     
  • 4.132, Урри (?), 23:49, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    lua. Все красиво, удобно и интуитивно понятно.
     
     
  • 5.137, Аноним (137), 03:42, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И индексы начинаются с 1. Спасибо, ешьте сами.
     
     
  • 6.160, Урри (?), 20:28, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Индексация и должна быть с 1 Вся мировая математика считает с 1 - почему програ... большой текст свёрнут, показать
     
  • 5.150, vitalif (ok), 11:28, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > lua. Все красиво, удобно и интуитивно понятно.

    и begin end, ага. убивать

     
  • 3.92, Совершенно другой аноним (?), 12:24, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Безотносительно недостатков языка - если автор выделит язык "на котором можно легко и приятно писать, не опасаясь, что из-за близости ящика ананасов и яблок весь склад не взорвется", то это, наверное, уже будет не JavaScript. А новый язык, уже не особо сильно и нужен - их и так уже придумано достаточно много, а автор, к сожалению, не Google, у него нет таких ресурсов, чтобы популяризировать новый язык и создать большое сообщество под своей эгидой.
     
  • 2.97, gfederix (ok), 12:54, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну давайте ещё вспомним операции с плавающей точкой. Всё-таки это применяемый на практике, живой язык. Не нравится пользуйте webassembly как прослойку, для "идеального языка" или обмазывайтесь TS с кофе.
     
     
  • 3.121, Урри (?), 16:44, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    С вебассембли есть большая проблема - он еще не устаканился, поэтому эмскриптен, например, каждый месяц ломают обратную совместимость и каждый месяц приходится по новой вчитывать "что же они там в этот раз поломали".

    Впрочем, я забил - я просто тащу с собой их старый фреймворк и работаю только через него.

     
  • 3.123, Урри (?), 16:58, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Для идеального языка по работе с числами есть фортран и лисп.

    (* 12345678987654321 78912345654321987)
    ; ==> 974226487611077725558868785855827

     
     
  • 4.138, Аноним (137), 03:45, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Обратная запись. Ты наркомэн штолле?
     
     
  • 5.166, Урри (?), 09:53, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Вот и выросло поколение...

    Во-первых, не обратная, а прямая. Префиксная.

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

    > (/ 12345 555)

    823/37

     
  • 4.172, gfederix (ok), 14:04, 22/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Для идеального языка по работе с числами есть фортран и лисп.
    > (* 12345678987654321 78912345654321987)
    > ; ==> 974226487611077725558868785855827

    Вы решаете не ту проблемму том же C++ для такой проблеммы можно просто класс написать, чтобы это решить.

    А вы попробуйте вот такой пример скажем в scheme48:
    > (+ 0.2 .1)

    0.30000000000000004

    Ну или
    > (+ (/ 2 10) (/ (/ (log 10) (log 10)) 10))

    0.30000000000000004

    > (log (exp (/ 1 10)))

    0.10000000000000007

     
  • 2.105, Аноним (105), 14:42, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > [,,,].length // 3

    А что тут не так? Лист не пустой, конечно длинна будет 3. Вот размер будет нулевой, или в жабе нету подчёта размера?

     
     
  • 3.111, Урри (?), 15:31, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Четыре. Три запятые, четыре элемента.

    О чем и речь.

     
  • 3.151, Аноним (140), 12:07, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    не будет он нулевой.
    Это будет массив из 3х пустых элементов.
     
  • 2.146, Аноним (140), 10:01, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    такие грабли есть у всех языков. Не используй автоматическое преобразование типов если не понимаешь как оно работает.
    !![] == ![]
    [1,2,3].concat([4,5,6])
    new Array(4)
     
     
  • 3.154, Аноним (154), 12:52, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > такие грабли есть у всех языков.

    Правда? В Haskell, Clean, Miranda, МL, Mercury? Или может в семействе паскалевых, в Ada?

     
  • 3.155, Аноним (154), 12:55, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > такие грабли есть у всех языков.

    Это в первую очередь грабли динамичных ЯП и ЯП со слабой типизацией, особенно с неявными преобразованиями.

     
  • 2.156, ksa242 (?), 13:31, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    isNaN(null) === false
     
     
  • 3.167, Аноним (167), 13:04, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    и тут он узнал что null и NaN это разные значения (и типы)
     
     
  • 4.169, ksa242 (?), 20:31, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Не в этом дело. По стандарту isNaN() всё, что не Number и не NaN, приводит к Number; и по стандарту же null приводится к +0, хотя, как ниже заметили, typeof null === "object", а object при приведении к Number по стандарту  должен давать как раз NaN. Поведение документировано.
     
  • 2.168, Аноним (167), 14:11, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    typeof null === "object"
     

     ....большая нить свёрнута, показать (51)

  • 1.6, Аноним (6), 23:21, 11/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +21 +/
    Толковый мужик. Я из математики помню только таблицу умножения.
     
  • 1.7, _Vitaly_ (ok), 23:22, 11/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    Про скорость верится с трудом. Скорее всего встроенные как интерпретаторы соревнуют. Это как если в современном браузерном движке просадить инлайновые кеши деоптимизациями. Скорость упадет в 4-10 раз.

    Яваскрипт для оптимизаций вообще не очень. Просто в него уже столько бабла ввалили, что все что угодно конфетами запахнет.

     
     
  • 2.35, _kp (ok), 00:46, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Для встраиваемых систем сейчас позарез нужен компактный Javascript, причём, вменяемость важнее скорости. Буду тестировать.
     

  • 1.8, Антон (??), 23:26, 11/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Движок js, выполняемый в браузере это сильно конечно, но зачем???
    А так самое интересное тут это компилятор. Можно ли будет, скажем, сервер под ноду скомпилировать, т.е. скомпилированный js + libuv
     
     
  • 2.63, Andrey Mitrofanov_N0 (??), 08:57, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Движок js, выполняемый в браузере это сильно конечно, но зачем???

    Мозила наконец-то выкиет неполиткорректный эйковский LISP ^W
    js из бровзера же!

    </Заживём>.

     
  • 2.85, Аноним (85), 11:29, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Можно ли будет, скажем, сервер под ноду скомпилировать, т.е. скомпилированный js + libuv

    Возникает вопрос: а зачем вам тогда js сдался? Может писать на компилируемом языке сервер сразу и не заниматься ерундной?

     
     
  • 3.87, Аноним (86), 11:38, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    JS иногда позволяет починить такие косяки дизайна программ, которые в компилируемых языках починить просто невозможно, в нём отлично реализованы вские замыкания и прочие плюхи, которые весьма облегчают программирование (но не саппорт) и делают код более компактным и простым (ровно до момента пока автор этот код помнит)
     
  • 2.107, Аноним (105), 14:44, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Компактность и простота встраивания в другие проекты. Код включает лишь несколько файлов на языке Си, не требующих для сборки внешних зависимостей. Скомпилированное простейшее приложение занимает около 190 Кб;

    Не обязательно в браузере запускать интерпритатор. Достаточно говнореализациию от всяких мозилл и гуглов заменить.

     

  • 1.9, Аноним (-), 23:26, 11/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    >javascript
    >компактность

    звучит как оксюморон

     
  • 1.10, gsdh (?), 23:32, 11/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Наконец-то, адекватная реализация.
     
  • 1.12, Аноним (12), 23:32, 11/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А это можно вместо lua в качестве встраиваемого языка применять?
     
     
  • 2.16, Аноним (16), 23:46, 11/07/2019 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Как официальный Аноним оппенета официально запрещаю тебе использовать вместо lua данную js поделку. Во имя Линуса, Ядра и святого опесорсного духа.
     
     
  • 3.24, Аноним (-), 00:01, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Во имя Линуса, Ядра и святого опесорсного духа.

    Тебе имя автора ни о чем не говорит?

     
  • 3.29, Аноним (12), 00:08, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Lua - MIT
     
     
  • 4.33, IRASoldier_registered (ok), 00:23, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И что? "Лицензия MIT (англ. MIT License) - лицензия открытого программного обеспечения (...)". Т.е. - open-source license.
     
     
  • 5.48, gsdh (?), 06:06, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > Т.е. - open-source license.

    Господи, да сколько вам объяснять что опенсорс != свободный софт,

    MIT и BSD != GNU и GPL, которые можно юзать везде

     
     
  • 6.50, Аноним (50), 06:27, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Все можно использовать. Вопрос в том, что именно ты пишешь. Исповедования Столлмана (равно как и христианства, мусульманства, буддизма) пожалуйста оставляйте при себе и больше не позорьтесь.

    Вот именно сейчас ты опозорил Столлмана, который тебе мильон раз объяснил, что GNU это философия (и акроним), а GPL это лицензия.

     
     
  • 7.67, Andrey Mitrofanov_N0 (??), 09:15, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Малыши http www opennet ru openforum vsluhforumID3 112997 html 153 обижены htt... большой текст свёрнут, показать
     
  • 6.65, Аноним (65), 09:06, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Господи, да сколько вам объяснять что опенсорс != свободный софт,
    > MIT и BSD != GNU и GPL, которые можно юзать везде

    NIT и BSD также являются свободными. Они, кроме того, не являются копилефт-лицензиями, поэтому, в отличие от кода под GNU GPL, код под MIT или BSD действительно можно юзать везде. Учитывая, что это встраиваемая реализация, использование GPL или даже LGPL сильно ограничило бы область применения.

     
     
  • 7.98, Andrey Mitrofanov_N0 (??), 12:54, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну, давай, давай про ограничения 1 Нельзя в гугле Там только ASL, лояры... большой текст свёрнут, показать
     
     
  • 8.143, Аноним (50), 09:17, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ты очень много ссылаешся на других, а толком выразить свою мысль не можешь Пояс... большой текст свёрнут, показать
     
     
  • 9.157, Andrey Mitrofanov_N0 (??), 14:29, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Там почти все ссылки на меня-любимого Ты толком читать не научился Купи... текст свёрнут, показать
     
  • 6.106, Dheev (?), 14:44, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    GPL можно использовать не везде. В проприетарные компоненты встраивать нельзя.
     
     
  • 7.128, Аноним (128), 19:21, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Проблема не только и не столько в проприетарщине. GPL-код нельзя линковать с кодом под кучей других свободных лицензий: https://www.gnu.org/licenses/license-list.html#GPLIncompatibleLicenses
     
  • 6.109, Аноним (105), 14:46, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –3 +/
    В GPL обязательно открытие исходников (только в 3.0, в 2.0 есть лазейки). В остальном MIT ничем не отличается. Ну да, MIT можно в проприетарщине юзать и не давать никому исходники, это минус.
     
     
  • 7.170, Andrey Mitrofanov_N0 (??), 08:38, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > В GPL обязательно открытие исходников (только в 3.0,

    Нет.  Не "открытие исходнков", а "предоставление прав".
    И не "откытие"  вааще, а предоставление [тех же] прав получателям кода.

    Нет.  Выкладывать  винтеренет _не_обязательно_. Но можно, да.

    Вас покусали!   Срочно сделайте прививку от гпл-опенсорсия.  А то так и до гидхаб-пермиссивия не далеко.

    "" --Резать!  Резать к ч.м., не дожидаясь перитонита. ""

    >в 2.0 есть лазейки).

     
  • 6.116, IRASoldier_registered (ok), 16:31, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Господи, да сколько вам объяснять что опенсорс != свободный софт,

    Не надо никому ничего объяснять - то, что ты пытаешься объяснить не имеет отношения к СУТИ вопроса.

    > MIT и BSD != GNU и GPL, которые можно юзать везде

    Вот ещё один GPL-зацикленный... Кто-то запрещает использовать везде выложенное под MIT? Вот как НАДО формулировать вопрос. Не "но это же не GPL?" (и не "а что по этому поводу говорит Столлман?", бгг), а "что мне позволяет MIT?".

     
  • 5.64, Andrey Mitrofanov_N0 (??), 09:00, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > И что? "Лицензия MIT (англ. MIT License) - лицензия открытого программного обеспечения
    > (...)". Т.е. - open-source license.

    Как что?!1  Она же напрочь отбивает у анОнимов чувство прекрасного, глымления и сарказЬму.   Бида с ней.

     
  • 2.18, Crazy Alex (ok), 23:49, 11/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тот же ducktape сто лет как можно
     
  • 2.19, Аноним (65), 23:50, 11/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я тебе по секрету скажу: вон те аналоги, которые в новости перечислены, уже давно именно так и применяют. Правда не знаю, зачем, если есть lua.
     
  • 2.20, Аноним (20), 23:53, 11/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Для встраивания всё есть. Так что можно, разрешаю
     

  • 1.13, Аноним (16), 23:44, 11/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    А мужики то и не знают что встраиваемые системы надо на джава скрипте писать а не на С. Завтра им обязательно сообщу что они ерундой занимаются.
     
     
  • 2.14, Антон (??), 23:45, 11/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    C заменять не надо. А вот вместо питона было бы отлично.
     
  • 2.21, Аноним (-), 23:56, 11/07/2019 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Если Беллар не мужик, то я не знаю кого ты зовешь мужиками.
     
     
  • 3.147, Аноним (147), 10:05, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Не путай с "мужчиной". Исторически "мужик" - это крестьянин, почти раб "дворянина".
     
  • 2.23, Crazy Alex (ok), 23:57, 11/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    1) "Встраивание в другие системы" и "встраиваемые системы" - разные вещи.
    2) Удивись - питон тот же ещё в avr и PIC упихивали. О бейсике и том, на чём в своё время крутился, и не говорю - тогдашние компы мощи нынешней встройки могут только позавидовать.
     
  • 2.36, _kp (ok), 01:03, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > А мужики то и не знают что встраиваемые системы надо на джава
    > скрипте писать а не на С.

    Конечно, основной функционал пишется на си.
    А если устройство мало мальски интелектуальное, то поддержка стандартных скриптов, для большей гибкости, то это совсем другой уровень.

    Помимо всяких контоллеров, Javascript/Lua есть в фотоаппаратах, контроллерах телескопов...
    Быстродействие скриптов в таких применениях некритично, достаточно что бы они не создавали проблем из за частичного соответствия стандартам.

     

  • 1.15, andy (??), 23:45, 11/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    нужно сравнение по производительности с v8
     
     
  • 2.22, Аноним (22), 23:56, 11/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Какой смысл сравнивать слона с таксой? Лучше сравнить с той же lua
     
     
  • 3.28, kEKS (?), 00:07, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    V8 тоже встраиваемый js-движок (про node.js не слышали?). В чём проблема сравнить?
     
     
  • 4.32, Аноним (22), 00:22, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    V8 такой же встраиваемый, как cpython. Тут же речь про компактность. Ну обгонит V8 раз в 10 и дальше что? Какой вывод из этого можно сделать? То что жирный монстр с jit и морем оптимизаций уделал компактный двиг? Вот это неожиданность.
     
     
  • 5.158, Michael Shigorin (ok), 15:38, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    О, у нас снова User294 :)
    Привет!
     
  • 3.69, Andrey Mitrofanov_N0 (??), 09:29, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Какой смысл сравнивать слона с таксой?

    Нода-и хрома- фаги увидели Возможность!  В новости написано ж "быстрее!"

    Поэтому, быстрее - пока не началось!(ц) анекдот,  нужно втащить бузинессь-преимущества в проакшен, повысить эффективность же.

    Эффективные оптимизируют.

    >Лучше сравнить с той же lua

    Вот и Вы тоже -- участвуете, ищете микрооптимизаций и бузинес проффитов, задаёте "интересные вопросы", да?

    Поеннет, пятниця -- жизнь бурлит....  //И да, Беллард - титан.

     
  • 2.40, НяшМяш (ok), 01:47, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Взял из их архива bench-v8, сбилдил QuickJS и сравнил с нодой: https://pastebin.com/rfb7k13m
     
     
  • 3.70, Andrey Mitrofanov_N0 (??), 09:34, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Взял из их архива bench-v8, сбилдил QuickJS и сравнил с нодой: https://pastebin.com/rfb7k13m

    Где в этом наборе букафф -- сравнение-то??   Не позорился б,  подождал час-другой, пока Ларабель сделает настоящее сравнение с грахвиками, прОцентами и целеуказующими стрелочками на оных "<-<< less is butter".  /</>/

     
     
  • 4.84, Аноним (84), 11:21, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Чё ноешь? Циферки не умеешь читать, графики подавай?
    Чел взял и сравнил. Хочешь лучше - сделай сам! Или жди фороникс, а не ной.
     
  • 4.100, НяшМяш (ok), 13:21, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Чёрт, вот хотел же сделать по модно-хипстерски, а сделал на отвянь, за что и поплатился )

    А если серьёзно - ещё попробовал запустить их microbench.js, но там как-то жутко прибито к апишкам QuickJS и я пока не прошарил как это запустить на ноде. Там тестов намного больше и они нагляднее.

     
  • 3.102, Аноним (102), 13:38, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Что показывают эти числа? Число выполненных циклов за фиксированное время (т.е. скорость)? Или время выполнения теста? Вижу, что один в 20 раз лучше другого, но который?
     
     
  • 4.104, НяшМяш (ok), 14:39, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Выдержка из комментария к бенчмарку:

    Suites of benchmarks consist of a name and the set of benchmarks in addition to the reference timing that the final score will be based on. This way, all scores are relative to a reference run and higher scores implies better performance.

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

     

  • 1.25, Аноним (25), 00:02, 12/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > основавший в свое время FFmpeg
    > разработавший формат изображений BPG




    » ffmpeg -formats|grep -i bpg
    ffmpeg version 4.1.3 Copyright (c) 2000-2019 the FFmpeg developers

    [exit code: 1]



    Как так?

     
     
  • 2.26, Lol (??), 00:06, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +6 +/
    В следующий раз проверь поддержку FFmpeg'ом JavaScript'а
     
     
  • 3.31, Аноним (31), 00:11, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    И QEMU ещё.
     
     
  • 4.76, Andrey Mitrofanov_N0 (??), 10:05, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > И QEMU ещё.

    https://duckduckgo.com/?q=%D0%B8+%D0%B6%D0%B8� //и картинка тоже+

     
  • 2.30, Аноним (30), 00:10, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну вот так, в туду пока что, не впилили еще)
    https://trac.ffmpeg.org/ticket/4169
     
  • 2.171, мяя (?), 18:03, 21/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Не стандарт же. Широкой поддержки не получил.
    Это же по сути HEVC, а для него для изображений есть куда более официальный HEIF.
     

  • 1.27, izyk (ok), 00:07, 12/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Вот это, реально, крутой чувак.
     
  • 1.37, Аноним (37), 01:21, 12/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    так так так... теперь в реализацию webasm на js засунем QuickJS внутри браузера а то 16Гб на вкладку уже не комильфо
     
  • 1.38, Аноним (37), 01:24, 12/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    хоть более нормальных свободных альтернатив qemu нет, qemu еще то гвн0. Берем учебник английского языка и гаглим  "google cloud && qemu"
     
     
  • 2.74, Andrey Mitrofanov_N0 (??), 10:01, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > хоть более нормальных свободных альтернатив qemu нет, qemu еще то гвн0. Берем
    > учебник английского языка и гаглим  "google cloud && qemu"

    Смотрите, дети, на этого анОнима...

       ...г"А"глит он клауд, а г--но == qemu.

    ...и никода так не делайте [I] ~ [/I]

     
  • 2.110, Аноним (-), 15:13, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вам бы учебник русского языка взять... ну, погаглить предварительно...
     

  • 1.42, user90 (?), 02:21, 12/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Вот этого (js) - не надо! Вроде и математик, а такую фигню.. ааа, точно! Математик жи ;)

    > Проще говоря WebAssembly представляет технологию, которая позволяет
    > запускать в браузере низкоуровневый скомпилированный код.

    Ну, такое.. ведь никто не добавляет "из доверенных источников", ХОМЯКИ!))

     
  • 1.44, Онаним (?), 04:47, 12/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > Реализация JavaScript поддерживает спецификацию ES2019

    Т.е. Babel больше не нужен?

     
     
  • 2.153, Аноним (140), 12:16, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А как запускать es2019 в старом ie?
     

  • 1.47, Аноним (47), 05:57, 12/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > Поддержка компиляции кода на языке Javascript в исполняемые файлы без внешних зависимостей;

    Зависимости будут в рантайме из интернета подтягиваться.

     
     
  • 2.79, Andrey Mitrofanov_N0 (??), 10:10, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >> Поддержка компиляции кода на языке Javascript в исполняемые файлы без внешних зависимостей;
    > Зависимости будут в рантайме из интернета подтягиваться.

    Тебе ж русским языком по белому написали:  без glibc-а  .
    Всё.  Остальное не важно.

     

  • 1.49, Аноним (49), 06:10, 12/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Интересно сможет ли он заменить PhantomJS? Было бы круто использовать его в CI/CD системах для тестирования фронтенда.
     
     
  • 2.55, Quarck (?), 08:01, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    phantomjs давно помер и не нужен, chrome и firefox поддерживают headless режимы.
     
  • 2.56, Аноним (56), 08:07, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    насколько помню, PhantomJS был браузером без GUI, а не просто js-движком. И его уже заменяет современный хром в режиме headless, драйверы к нему уже прикрутили, вроде
     

  • 1.71, qwerty123 (??), 09:42, 12/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    # du -h quickjs.c
    1.5M quickjs.c

    # wc -l quickjs.c
       47841 quickjs.c

    вот так, сразу, внезапно, кода на 1000 страниц.
    в одном файле.

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

     
     
  • 2.82, пох. (?), 10:15, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    разница между вами в том, что у него этот код - работающий, и, в общем-то, даже и понимаемый.

    А тебе сколько ни кури - ничего кроме хихиканья не произведешь.

     
     
  • 3.141, qwerty123 (??), 08:30, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >А тебе сколько ни кури - ничего кроме хихиканья не произведешь.

    чувак, не поверишь, несмотря на всякое, я таки пишу разные программы.
    и они таки работают.

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

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

    ты думаешь, кроме него в структуру кто-то может еще вотнуться и дописать?

     
  • 2.114, имя (?), 16:14, 12/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > взял чувак ганджубас, хорошо так затянулся, и фигак с клавиатуры кода полтора
    > магабайта в одну портянку.

    Звучит так, будто он за день в одно рыло нагенерировал, но нет:

    > * Copyright (c) 2017-2019 Fabrice Bellard
    > * Copyright (c) 2017-2019 Charlie Gordon

     
     
  • 3.142, qwerty123 (??), 08:32, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >Звучит так, будто он за день в одно рыло нагенерировал, но нет:
    >2017-2019

    А это как затянуться.

     
  • 2.144, Аноним (50), 09:35, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Он математик, а не программист. Не злись, придут люди и расфасуют код по файликам как надо. Ты сам можешь начать это делать.
     

  • 1.94, Андрей (??), 12:39, 12/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Опционально поддерживаются нестандартные математические расширения для JavaScript, такие как типы BigInt и BigFloat

    BigInt только только в Firefox 68 официально появился. А тут один Человек успел. Да ещё и не кое-как лишь бы работало.

     
  • 1.99, Аноним (99), 13:05, 12/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Вроде бы и математик - умный человек. А приток смузи победил. Модно-молодёжно... а шутки про тостер с дырявым JS скоро станут кошмарной реальностью
     
     
  • 2.162, Аноним (162), 03:05, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Альтернативная реальность, где ранее разумные люди делают что-то полезное тебе не доступна?
     

  • 1.103, Аноним (103), 14:00, 12/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Приложение под видом документа - это троян.
     
     
  • 2.163, Аноним (162), 03:06, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Где ты был последние 20 лет? Тебя всё устраивало?
     

  • 1.112, Wilem (?), 15:46, 12/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вместо того, что бы похоронить этот недоязык, они его развивают. Whyyyy.
     
  • 1.113, Аноним (113), 16:00, 12/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Научите Белларда в git уже! Ну что за архивы в tar.gz на его странице?
     
  • 1.127, Michael Shigorin (ok), 19:01, 12/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если кого возмутила встройка -- ну посмотрите, с чем нынче линкуется polkit.  Да, меня там и libxml2 смущала, но и это познаётся в сравнении, как оказалось.

    PS: надо добыть себе немного стадотомиков:[CODE]lcc: "quickjs.c", строка 107: фатальная ошибка: не
              могу открыть исходник файл "stdatomic.h"[/CODE]

     
     
  • 2.135, Андрей (??), 00:35, 13/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > lcc

    И в значительно более активно развивающемся tcc нет. Вот это точно досадно.

     

  • 1.136, Аноним (136), 00:54, 13/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Фабрис опять жжет. То виртуалку на джеэс напишет, то компилятор, а ведь уже 47 лет мужику.
     
     
  • 2.164, Аноним (162), 03:07, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И, с твоей точки зрения он должен перестать делать то, что он делает? Или как?
     

  • 1.152, Аноним (140), 12:15, 13/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Компиляция js в исполняемый файл это очень интересно.
     
     
  • 2.165, Аноним (162), 03:08, 14/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Чем это ново и почему это интересно тебе?
     

  • 1.159, KonstantinB (ok), 16:06, 13/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот за libregexp Фабрису спасибо!

    "Backtracking with an explicit stack is used so that there is no recursion on the system stack. Simple quantizers are specifically optimized to avoid recursions."

    Прямо то, что мне надо, чтобы заменить PCRE с его комбинаторными взрывами, но иметь возможность backtracking-а.

     
  • 1.173, Аноним (173), 17:00, 05/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Крутой чувак надо ему памятник поставить...
     

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



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

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