LINUX.ORG.RU
ФорумTalks

нода слилась

 ,


1

3

https://nodejs.org/en/blog/release/v4.0.0/

нода слилась обратно с io.js. В принципе там очень много полирования яиц, которое могут объять разумом только очень продвинутые разработчики. Самое понятное наверное заключается в апдейте v8 до свежего состояния. Из доступного:

- генераторы
- промисы

Остальное, к сожалению, пока с ключами:

--es_staging (enable all completed harmony features)
--harmony (enable all completed harmony features)
--harmony_shipping (enable all shipped harmony fetaures)
--harmony_modules (enable «harmony modules» (in progress))
--harmony_array_includes (enable «harmony Array.prototype.includes» (in progress))
--harmony_regexps (enable «harmony regular expression extensions» (in progress))
--harmony_proxies (enable «harmony proxies» (in progress))
--harmony_sloppy (enable «harmony features in sloppy mode» (in progress))
--harmony_unicode_regexps (enable «harmony unicode regexps» (in progress))
--harmony_reflect (enable «harmony Reflect API» (in progress))
--harmony_destructuring (enable «harmony destructuring» (in progress))
--harmony_sharedarraybuffer (enable «harmony sharedarraybuffer» (in progress))
--harmony_atomics (enable «harmony atomics» (in progress))
--harmony_new_target (enable «harmony new.target» (in progress))
--harmony_tostring (enable «harmony toString»)
--harmony_concat_spreadable (enable «harmony isConcatSpreadable»)
--harmony_rest_parameters (enable «harmony rest parameters»)
--harmony_spreadcalls (enable «harmony spread-calls»)
--harmony_spread_arrays (enable «harmony spread in array literals»)
--harmony_arrow_functions (enable «harmony arrow functions»)
--harmony_computed_property_names (enable «harmony computed property names»)
--harmony_unicode (enable «harmony unicode escapes»)
--harmony_object (enable «harmony Object methods»)

Еще из заметного - починили приличные регрессии скорости, которые набегали после 0.10 ноды.

★★★★★

Последнее исправление: Vit (всего исправлений: 1)

Прочитал тред, но так и не понял главного, что там с he/she?

buddhist ★★★★★
()
Ответ на: комментарий от Vit

Проблема в том, что на уровне AST уже потеряна информация о синтаксисе.

?? AST это abstract syntax tree, если что. Там даже, бывает, комментарии и ширина отступа сохраняется, если нужно. Вплоть до trailing spaces. Т.е. можно реконструировать текст обратно 1:1 если надо. Видел такое, кажись, в livescript, но наверняка утверждать не берусь.

И если тебе надо сделать новый кастомный блок типа fenced code

Это как? Не парсить всё что между «~~~» что-ли? :)

инлайновые теги с поддержкой вложенности и правильным приоритетом

Это как?

на практике значит «полностью переписать с нуля».

Yip, и такое бывает. Но при наличии отправной точки это больше на рефакторинг похоже.

true_admin ★★★★★
()
Последнее исправление: true_admin (всего исправлений: 1)
Ответ на: комментарий от true_admin

Т.е. можно реконструировать текст обратно 1:1 если надо. Видел такое, кажись, в livescript, но наверняка утверждать не берусь.

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

Это как? Не парсить всё что между «~~~» что-ли? :)

@@@

```

@@@

```

Представь себе такое пересечение. Ну и понятно еще куча текста внутри. Заколебешься перековыривать.

Yip, и такое бывает. Но при наличии отправной точки это больше на рефакторинг похоже.

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

Vit ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Это приблизит смерть обоих поделий или отдалит?

Судя по заголовку темы ("нода слилась") — приблизит. Аминь.

dexpl ★★★★★
()
Ответ на: комментарий от Vit

заново запарсишь правильно, раз не смог это сделать в первый раз.

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

@@@

```

@@@

```

Что это значит? Зачем такое делать?

ничего с подходящими алгоритмами не нашлось, на любом языке

Такое сплошь и рядом в программировании, не? NIH-проблема вообще не зависит от языка или технологии, оно есть везде.

true_admin ★★★★★
()
Ответ на: комментарий от Vit

Я на всякий случай добавлю что я расширял, кажется, python-markdown. Оно модульное и там относительно простые правила парсинга. ЕМНИП, там был простой peg-парсер на регекспах. Я не пытался делать что-то мегакрутое на нём, но парочку кастомных синтаксических конструкций добавлял.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

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

Vit ★★★★★
() автор топика
Ответ на: комментарий от true_admin

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

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

Что это значит? Зачем такое делать?

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

Если нужно корректно расширять синтаксис, то плагиниться надо до отстройки AST а не после. После ты сможешь сделать только ограниченный набор фич.

Vit ★★★★★
() автор топика
Ответ на: комментарий от kep

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

В текущем проекте nltk. Что дальше?

Какая, нафиг, ссылка на гитхаб, когда оно закрыто?

x3al ★★★★★
()
Ответ на: комментарий от Vit

захотелось мне добавить разметку сайдбара

Я ничего не понял. Можешь пример показать? Данные на входе и данные на выходе.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

https://github.com/markdown-it/markdown-it-container вот пример, чтобы была понятна пропасть в подходах. Попробуй в типовой парсер добавить кастомные контейнеры, в которые можно класть разметку. Естественно, чтобы поведение было предсказуемым и логичным, а не на уровне запарсить хтмл регуляркой.

Vit ★★★★★
() автор топика

IT-шники это вообще не специалисты, а выскочки, да.

Спецы пользуются специальными инструментами, а не молотком забивают винт

EnterpriseMobility
()
Ответ на: комментарий от true_admin

https://github.com/markdown-it/markdown-it-container

Вот тут примеры. Ими делаются «врезки» в текст, альтернативная разметка цитат и т.п. Нужность очевидна. Внутри должен поддерживаться маркдаун, а не просто строка текста.

Vit ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Мне от этого не легче.

По-моему ты от этого испытываешь удовольствие :)

Vit ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Форк - это смерть форкнутого или нет? А обратная операция?

slackwarrior ★★★★★
()
Ответ на: комментарий от tailgunner

Чем меньше жабаскрипта во Вселенной, тем лучше.

Имхо, критическая масса уже давно накопилась и сдетонировала.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Имхо, критическая масса уже давно накопилась и сдетонировала.

Тогда бы мы все уже погибли. Хотя... может, просто взрывная волна идет медленно.

tailgunner ★★★★★
()
Ответ на: комментарий от true_admin

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

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

Я не возьмусь утверждать что он решает задачу «легко и непринуждённо». Мне оно не понравилось и у меня в своё время несколько дней ушло чтобы понять что там происходит. Но я был молодой и зелёный, ты бы справился быстрее :).

Я поэтому отвечу только по поводу регулярок. Я не знаю как именно они там используется, но подозреваю что там PEG-парсер и постпроцессинг. Такая связка может распарсить практически любую грамматику. Я это точно знаю потому что я интересовался парсерами и делал, например, такое: Вышел релиз языка программирования truthon

true_admin ★★★★★
()

а ты все свои проекты после каждого апдейта ноды апгрейдишь? или оставляешь на старой ноде? или они у тебя без изменений работают?

вообще, обратная совместимость заявлена, или нет? несколько моих проектов на 0.10 рассыпаются на части при запуске на любой более поздней версии... вот думаю, это я делаю что-то не так, или нода..

waker ★★★★★
()
Ответ на: комментарий от true_admin

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

Про пеги и бизоны в курсе. Из парсеров делал тот самый яваскриптовый маркдаун и ямл. Естественно не с нуля, а насмотревшить того что есть. Точнее, насмотревшись и протошнившись :)

Vit ★★★★★
() автор топика
Ответ на: комментарий от waker

Ну ченджлоги смотри, не даром же версию меняют. Вообще после мажорных релизов лучше подождать пару минорных, чтобы разработчики пакетов прочухались и несовместимости подкрутили. Я обычно жду несколько месяцев.

Апгрейд 0.10 -> 0.12 был намного проще, чем 0.8 -> 0.10. Вчера один из программеров нодеку на 4.0 запустил, говорит вообще без ошибок завелась.

Пару месяцев назад переписывал NNTP-гейт, который бегал на 0.6 ноде, гы :) . Там пришлось полностью драйвер сиквеля менять, т.к. выбрал неудачный и он превратился в тыкву. За час управился.

Vit ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.