Size: a a a

Compiler Development

2020 January 23

VK

Vladimir Kazanov in Compiler Development
Peter Sovietov
Я помню, что когда только попал в чат, идею компиляторных wiki-обзоров мои собеседники восприняли скептически. Мол, есть же awesome-compilers и проч.
Приятно видеть теперь, что уже в некотором виде возникают запросы на английский перевод :)
Правда, я сам пока что хотел бы доработать wiki (много накопилось материалов), а не заниматься переводом.
А что думаете добавить?
источник

BD

Berkus Decker in Compiler Development
Alexander Tchitchigin
Чем дальше в TypeScript - тем проще и проще! 🤦‍♀️
Брендан Эйк запустил череду увлекательных событий, одно другого веселей.
источник

AT

Alexander Tchitchigin in Compiler Development
Berkus Decker
Брендан Эйк запустил череду увлекательных событий, одно другого веселей.
Это если со стороны смотреть, то да - весело.
источник
2020 January 24

VY

Vasiliy Yorkin in Compiler Development
Вопрос по tiger-book Аппеля (8 глава, стр. 177).
(cannon.ml: http://ix.io/28an, ir.ml: http://ix.io/28ao)

Разбираюсь с реализацией ф-ции reorder, вот её описание (я немного перефразировал для себя, но смысл не затронут):

Takes a [Ir.expr list] and returns a [(Ir.stmt, Ir.expr list)]. The first element [Ir.stmt] contains all the things that must be executed before the expression list [Ir.expr list]. This includes all the statement-parts of the [Ir.ESeq]'s, as well as any expressions to their left with which they did not commute.

(Remember, if [Ir.stmt] and [Ir.expr] don't "commute" then we can't change the order of their evaluation)

И пример:

[e1; e2; ESeq(s, e3)]

[s] must be pulled leftward past [e2] and [e1].

(0) If they all commute our [reorder] function will return
   [(stmt, exprs)] where:

   stmt  := s
   exprs := [e1; e2; e3]

(1) If [commute s e1 = true] and
      [commute s e2 = false]

   stmt  := Seq(Move(t1, e1), Seq(Move(t2, e2), s))
   exprs := [Temp t1; Temp t2; e3]

(2) If [commute s e1 = false] and
      [commute s e2 = true]

   stmt  := Seq(Move(t1, e1), s)
   exprs := [Temp t1; e2; e3]

(3) If all don't commute - same as (1)

Я не понимаю (1), а именно почему нужно Move(t1, e1).
Т.е. почему бы не переписать так
stmt  := Seq(Move(t2, e2), s)
exprs := [e1; Temp t2; e3]
?
источник

VY

Vasiliy Yorkin in Compiler Development
Хотя, я кажется понял пока писал...  e1 обязательно должно быть перед e2, тк это может быть Call или ESeq. Т.е. выражения e1, e2 и e3 тут (между собой) не "коммутативны" в том смысле, что они всегда потенциально с побочными эффектами в виде Call или ESeq(stmt, expr) и их нельзя переставлять местами, очевидно :)
источник

M

Mary in Compiler Development
Peter Sovietov
Я помню, что когда только попал в чат, идею компиляторных wiki-обзоров мои собеседники восприняли скептически. Мол, есть же awesome-compilers и проч.
Приятно видеть теперь, что уже в некотором виде возникают запросы на английский перевод :)
Правда, я сам пока что хотел бы доработать wiki (много накопилось материалов), а не заниматься переводом.
Wiki обзоры - это отличная идея, искала как раз что-то такое. По поводу авесам компилерс, он скорее мертв чем жив, 18 непринятых pr, битые ссылки, полтора года не обновлялся. Плюс там формат описания слишком короткий что бы быть полезным, имхо.
источник

МБ

Михаил Бахтерев in Compiler Development
Vasiliy Yorkin
Хотя, я кажется понял пока писал...  e1 обязательно должно быть перед e2, тк это может быть Call или ESeq. Т.е. выражения e1, e2 и e3 тут (между собой) не "коммутативны" в том смысле, что они всегда потенциально с побочными эффектами в виде Call или ESeq(stmt, expr) и их нельзя переставлять местами, очевидно :)
Я думаю, проще. e1 и e2 же не commute? Раз так, то просто формально их нельзя переставить
источник

VY

Vasiliy Yorkin in Compiler Development
Ну да, по сути этого не было в утверждении
источник

P🛸

Pavel 🛸 in Compiler Development
MaxGraey
А ты не знадумывался почему у нас дескрипшен «Definitely not a TypeScript to WebAssembly compiler»? Думаешь это мы придумали, или кто из MS подсказал? 😂
А почему?
источник

M

MaxGraey in Compiler Development
Pavel 🛸
А почему?
Я там ниже намекнул
источник

P🛸

Pavel 🛸 in Compiler Development
MaxGraey
Я там ниже намекнул
Кто то заметил что там взаимоисключающие параграфы в доке из-за этого происходят.
источник

TS

Timur Safin in Compiler Development
Тут вопрос важный задают https://twitter.com/johnregehr/status/1220774524532056065?s=19
источник

DP

Dmitry Ponyatov in Compiler Development
а случаев в JS не завезли окамловый pattern matching? — полно jsonовских структур, и DOM
стоит поискать в голубой книжке?
источник

AH

Ayrat Hudaygulov in Compiler Development
Dmitry Ponyatov
а случаев в JS не завезли окамловый pattern matching? — полно jsonовских структур, и DOM
стоит поискать в голубой книжке?
Одна компания целый язык для этого сделала...
источник

M

MaxGraey in Compiler Development
ReasonML что ли?)
источник

AH

Ayrat Hudaygulov in Compiler Development
MaxGraey
ReasonML что ли?)
Ага!
источник

M

MaxGraey in Compiler Development
Есть еще вот такое предложение:
https://github.com/tc39/proposal-pattern-matching

Но оно многим не нравиться, мне в том числе.
источник

M

MaxGraey in Compiler Development
До этого треда:
https://github.com/tc39/proposal-pattern-matching/issues/136

Там даже matching был стейтментом, а не выражением)
источник

AT

Alexander Tchitchigin in Compiler Development
ReasonML не отдельный язык, а просто другой синтаксис (фронт) для старого доброго OCaml.
источник

JC

Julian =) Coffee in Compiler Development
И для JavaScript в том числе
источник