Недавние конференции (статьи доступны)
CGO 2020 (порождение кода и оптимизация)
https://cgo-conference.github.io/cgo2020/program/
СС 2020 (построение компиляторов)
https://conf.researchr.org/program/CC-2020/program-CC-2020
PLDI 2020 (проектирование и реализация языков программирования)
https://pldi20.sigplan.org/program/program-pldi-2020
HOPL IV (история языков программирования)
https://hopl4.sigplan.org/track/hopl-4-papers#List-of-Accepted-Papers
#conf
CGO 2020 (порождение кода и оптимизация)
https://cgo-conference.github.io/cgo2020/program/
СС 2020 (построение компиляторов)
https://conf.researchr.org/program/CC-2020/program-CC-2020
PLDI 2020 (проектирование и реализация языков программирования)
https://pldi20.sigplan.org/program/program-pldi-2020
HOPL IV (история языков программирования)
https://hopl4.sigplan.org/track/hopl-4-papers#List-of-Accepted-Papers
#conf
Статьи по современным легковесным методам порождения кода
Destination-Driven Code Generation
https://pdfs.semanticscholar.org/dcb8/8719880e1f76ad71fb1c5aebb118e2ecfe71.pdf
One-pass Code Generation in V8
https://github.com/eatonphil/one-pass-code-generation-in-v8/blob/master/One-pass%20Code%20Generation%20in%20V8.pdf
HotpathVM: An Effective JIT Compiler for Resource-constrained Devices
https://static.usenix.org/events/vee06/full_papers/p144-gal.pdf
#codegen
Destination-Driven Code Generation
https://pdfs.semanticscholar.org/dcb8/8719880e1f76ad71fb1c5aebb118e2ecfe71.pdf
One-pass Code Generation in V8
https://github.com/eatonphil/one-pass-code-generation-in-v8/blob/master/One-pass%20Code%20Generation%20in%20V8.pdf
HotpathVM: An Effective JIT Compiler for Resource-constrained Devices
https://static.usenix.org/events/vee06/full_papers/p144-gal.pdf
#codegen
CBS — система для описания компонентной спецификации ЯП.
В каком-то смысле это аналог LLVM для формальной семантики. Идея в том, чтобы транслировать ЯП в элементарные, строго определенные конструкции, называемые funcons.
https://plancomps.github.io/CBS-beta/
#semantics
В каком-то смысле это аналог LLVM для формальной семантики. Идея в том, чтобы транслировать ЯП в элементарные, строго определенные конструкции, называемые funcons.
https://plancomps.github.io/CBS-beta/
#semantics
Programming Paradigms for Dummies: What Every Programmer Should Know
Ликбез по основным принципам ЯП: классификация, вопросы представления состояния, конкурентности и параллелизма.
https://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf
Ликбез по основным принципам ЯП: классификация, вопросы представления состояния, конкурентности и параллелизма.
https://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf
Крупнейшая конференция по истории ЯП - HOPL IV - была перенесена, но некоторые интересные ретроспективные обзоры уже доступны:
The History of Standard ML
https://smlfamily.github.io/history/SML-history.pdf
Evolution of Emacs Lisp
https://www.iro.umontreal.ca/~monnier/hopl-4-emacs-lisp.pdf
History of Logo
https://escholarship.org/uc/item/1623m1p3
The Early History of F#
https://fsharp.org/history/hopl-final/hopl-fsharp.pdf
A History of Clojure
https://clojure.org/about/history
A History of the Oz Multiparadigm Language
https://www.info.ucl.ac.be/~pvr/hopl20main-p14-p-329dcad--final.pdf
Thriving in a Crowded and Changing World: C++ 2006–2020
https://www.stroustrup.com/hopl20main-p5-p-bfc9cd4--final.pdf
Остальные доклады: https://dl.acm.org/toc/pacmpl/2020/4/HOPL
#conf #history
The History of Standard ML
https://smlfamily.github.io/history/SML-history.pdf
Evolution of Emacs Lisp
https://www.iro.umontreal.ca/~monnier/hopl-4-emacs-lisp.pdf
History of Logo
https://escholarship.org/uc/item/1623m1p3
The Early History of F#
https://fsharp.org/history/hopl-final/hopl-fsharp.pdf
A History of Clojure
https://clojure.org/about/history
A History of the Oz Multiparadigm Language
https://www.info.ucl.ac.be/~pvr/hopl20main-p14-p-329dcad--final.pdf
Thriving in a Crowded and Changing World: C++ 2006–2020
https://www.stroustrup.com/hopl20main-p5-p-bfc9cd4--final.pdf
Остальные доклады: https://dl.acm.org/toc/pacmpl/2020/4/HOPL
#conf #history
Авторы экспериментального компилятора для Emacs Lisp на базе libgccjit опубликовали работу, описывающие основные фазы работы компилятора
Bringing GNU Emacs to Native Code:
https://zenodo.org/record/3736363/files/GCCEMACS_proceeding.pdf?download=1
#lisp
Bringing GNU Emacs to Native Code:
https://zenodo.org/record/3736363/files/GCCEMACS_proceeding.pdf?download=1
#lisp
Работы по практическому применению передовых подходов E-Graphs (дедуктивный синтез программ) и Equality Saturation (решение для проблемы phase ordering).
Особенно интересно, что для серьезных примеров использования взяты области, далекие от традиционных целевых представлений компиляторов. Это показывает, что компиляторные технологии имеют более широкое применение, чем иногда принято думать.
Carpentry Compiler
https://grail.cs.washington.edu/projects/carpentrycompiler/files/CarpentryCompiler.pdf
Synthesizing Structured CAD Models with Equality Saturation and Inverse Transformations
https://jamesrwilcox.com/szalinski.pdf
Для работы с E-Graphs авторами разработана библиотека egg (есть веб-демо).
egg: Easy, Efficient, and Extensible E-graphs
https://arxiv.org/pdf/2004.03082.pdf
https://github.com/mwillsey/egg
#optimization
Особенно интересно, что для серьезных примеров использования взяты области, далекие от традиционных целевых представлений компиляторов. Это показывает, что компиляторные технологии имеют более широкое применение, чем иногда принято думать.
Carpentry Compiler
https://grail.cs.washington.edu/projects/carpentrycompiler/files/CarpentryCompiler.pdf
Synthesizing Structured CAD Models with Equality Saturation and Inverse Transformations
https://jamesrwilcox.com/szalinski.pdf
Для работы с E-Graphs авторами разработана библиотека egg (есть веб-демо).
egg: Easy, Efficient, and Extensible E-graphs
https://arxiv.org/pdf/2004.03082.pdf
https://github.com/mwillsey/egg
#optimization
Основные работы по методу насыщения равенствами (equality saturation)
Denali: A Goal-directed Superoptimizer (в работе описывается применение E-Graphs для задач оптимизации программ)
https://courses.cs.washington.edu/courses/cse501/15sp/papers/joshi.pdf
Equality Saturation: A New Approach to Optimization (вместо E-Graphs используются PEG/E-PEG, поддерживающие управляющие конструкции)
https://www.cs.cornell.edu/~ross/publications/eqsat/
"Доказательство свойств функциональных программ методом насыщения равенствами" (диссертация на русском языке)
https://keldysh.ru/council/1/2017-grechanik/diss.pdf
#optimization #synth
Denali: A Goal-directed Superoptimizer (в работе описывается применение E-Graphs для задач оптимизации программ)
https://courses.cs.washington.edu/courses/cse501/15sp/papers/joshi.pdf
Equality Saturation: A New Approach to Optimization (вместо E-Graphs используются PEG/E-PEG, поддерживающие управляющие конструкции)
https://www.cs.cornell.edu/~ross/publications/eqsat/
"Доказательство свойств функциональных программ методом насыщения равенствами" (диссертация на русском языке)
https://keldysh.ru/council/1/2017-grechanik/diss.pdf
#optimization #synth
Program Analysis
Свежий (весна 2020) курс по анализу программ, с неплохим выбором тем.
https://cmu-program-analysis.github.io/
#analysis
Свежий (весна 2020) курс по анализу программ, с неплохим выбором тем.
https://cmu-program-analysis.github.io/
#analysis
О вычислительной универсальности PEG-парсеров.
The computational power of Parsing Expression Grammars
https://arxiv.org/pdf/1902.08272.pdf
#parsing
The computational power of Parsing Expression Grammars
https://arxiv.org/pdf/1902.08272.pdf
#parsing