en
Feedback
PLComp

PLComp

Open in Telegram

Π―Π·Ρ‹ΠΊΠΈ ΠΈ компиляторы: вопросы Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ синтаксиса Π΄ΠΎ пороТдСния машинного ΠΊΠΎΠ΄Π°. Авторы: @vekazanov @igorjirkov @true_grue @clayrat @eupp7 @alexanius @AntonTrunov @GabrielFallen @graetestofnoldor

Show more
The country is not specifiedThe category is not specified
485
Subscribers
No data24 hours
-17 days
+530 days
Posts Archive
Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΡƒΠΆΠ΅ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ ΠΎ Π΄Ρ€Π΅Π²Π½Π΅ΠΌ GW-BASIC. Компания Microsoft Π²Ρ‹Π»ΠΎΠΆΠΈΠ»Π° исходники ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π½Π° github: https://devblogs.microsoft.com/commandline/microsoft-open-sources-gw-basic/ Π’ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅ ΠΏΠΎ ссылкС Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° ΠΈΠ½Ρ‚Ρ€ΠΈΠ³ΡƒΡŽΡ‰Π°Ρ Ρ„Ρ€Π°Π·Π°: "Microsoft was able to generate a substantial amount of the code for a port from the sources of a master implementation. (Alas, sorry, we’re unable to open-source the ISA translator.)". И Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, тСкст Π½Π° языкС ассСмблСра для 8088 Π±Ρ‹Π» ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ автоматичСски с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ транслятора. ΠŸΡ€ΠΈ этом Π΄Π°ΠΆΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² ΠΊΠΎΠ΄Π΅ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΌ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚, судя ΠΏΠΎ всСму, ΠΎ 8080. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΈΠ· ΠΆΡƒΡ€Π½Π°Π»Π° Byte Π·Π° 1982 Π³ΠΎΠ΄ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ возмоТности Ρ‚Ρ€Π΅Ρ… трансляторов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΊΠΎΠ΄ 8-Π±ΠΈΡ‚Π½Ρ‹Ρ… процСссоров 8080/Z80 для CP/M Π² 16-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ 8088/8086 для MS-DOS: https://tech-insider.org/personal-computers/research/acrobat/8206-b.pdf ОсобСнно выдСляСтся срСди этих трансляторов XLT86 (8080 -> 8086) ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Digital Research. Π­Ρ‚ΠΎΡ‚ транслятор β€” Π΄Π΅Ρ‚ΠΈΡ‰Π΅ Гэри Килдалла, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π½Π΅Ρ‚ нСобходимости. Π’ области построСния компиляторов Килдалл извСстСн своСй Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ A unified approach to global program optimization (1973): https://dl.acm.org/doi/pdf/10.1145/512927.512945 Π‘Ρ‚Π°Ρ‚ΡŒΡ Килдалла Π΄ΠΎ сих ΠΏΠΎΡ€ находится Π² числС самых Ρ†ΠΈΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠΎ компиляторной Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΈ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ± Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·ΠΆΠ΅ Π±Ρ‹Π» описан Π²ΠΎ мноТСствС ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΎΠ² ΠΈ примСняСтся Π² самых соврСмСнных компиляторах: http://compcert.inria.fr/doc-1.6/html/Kildall.html ВСрнСмся, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΊ XLT86. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»Π°ΡΡŒ докумСнтация ΠΊ транслятору: http://www.s100computers.com/Software%20Folder/Assembler%20Collection/Digital%20Research%20XLT86%20Manual.pdf Из Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Π² частности, Ρ‡Ρ‚ΠΎ: 1. Врансляция состоит ΠΈΠ· 5 Ρ„Π°Π·. 2. Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ участки ΠΈ строится Π³Ρ€Π°Ρ„ ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния. Π—Π°Ρ‚Π΅ΠΌ проводится Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… для опрСдСлСния "ΠΆΠΈΠ²Ρ‹Ρ…" рСгистров ΠΈ Ρ„Π»Π°Π³ΠΎΠ² процСссора. 3. Π‘Π°ΠΌ процСсс "Π²Ρ‹Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄" элСгантно описан Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. НСкоторыС ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ условными ΠΈ зависят ΠΎΡ‚ Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…. 4. Вранслятор написан Π½Π° ЯП PL/I-80 ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 6 KΠ±Π°ΠΉΡ‚. #history #analysis

ОсобСнно ΠΆΠ΅ интСрСсными (ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ, разумССтся) событиями симпозиума ΠΏΠΎ Лиспу оказались: Π΄ΠΎΠΊΠ»Π°Π΄ ΠΈ сСминар ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²ΠΎΠΌΡƒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡƒ (Π½Π°Π±ΠΎΡ€ eDSL Π½Π° языкС Scheme) для быстрой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ компиляторов Nanopass. По Nanopass ΠΊΠ°ΠΊ Ρ€Π°Π· Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ свСТСй, Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² авторском ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π”ΠΎΠΊΠ»Π°Π΄ The Nanopass Framework as a Nanopass Compiler Π‘Π»Π°ΠΉΠ΄Ρ‹: https://www.european-lisp-symposium.org/static/2020/keep-slides-keynote.pdf Π’ΠΈΠ΄Π΅ΠΎ: https://www.youtube.com/watch?v=lqVN1fGNpZw Π‘Π΅ΠΌΠΈΠ½Π°Ρ€ Mixing Mutability into the Nanopass Framework Π‘Π»Π°ΠΉΠ΄Ρ‹: https://www.european-lisp-symposium.org/static/2020/keep-slides-workshop.pdf Π’ΠΈΠ΄Π΅ΠΎ: https://www.youtube.com/watch?v=wTGlKCfP90A #langworkbench #dsl #nanopass

НСдавно (27-28 апрСля, 2020) состоялся СвропСйский симпозиум ΠΏΠΎ Лиспу. European Lisp Symposium https://www.european-lisp-symposium.org/2020/ ВидСозаписи Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ²: https://www.youtube.com/playlist?list=PLA66mD-6yK8yjlJCI0Ay2f2IvvmB9Ktga НиТС краткая информация ΠΎ 3 Π΄ΠΎΠΊΠ»Π°Π΄Π°Ρ… ΠΏΠΎ околокомпиляторной Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅: Partial Evaluation Based CPS Transformation: An Implementation Case Study ОписаниС компилятора для Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π° Лиспа pLisp. Π’ компиляторС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ частичныС вычислСния ΠΈ CPS. Π‘Π»Π°ΠΉΠ΄Ρ‹: https://www.european-lisp-symposium.org/static/2020/jayaprakash-slides.pdf ВСкст Π΄ΠΎΠΊΠ»Π°Π΄Π° Π² сборникС: https://www.european-lisp-symposium.org/static/proceedings/2020.pdf LLVM Code Generation for Open Dylan Dylan β€” это Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ Лиспа с Алгол-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ синтаксисом. Π’ Π½Π°Ρ‡Π°Π»Π΅ 90-Ρ… этот язык развивался ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Apple. Π’ Π΄ΠΎΠΊΠ»Π°Π΄Π΅ прСдставлСно описаниС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π° для Dylan Π½Π° основС LLVM. Π‘Π»Π°ΠΉΠ΄Ρ‹: https://www.european-lisp-symposium.org/static/2020/housel-slides.pdf ВСкст Π΄ΠΎΠΊΠ»Π°Π΄Π° Π² сборникС: https://www.european-lisp-symposium.org/static/proceedings/2020.pdf Later Binding: Just in Time Compilation of a Younger Dynamic Programming Language ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· компилятора LuaJIT Π’ΠΈΠ΄Π΅ΠΎ выступлСния: https://www.youtube.com/watch?v=FBk5XAEhu2s ВСкст Π΄ΠΎΠΊΠ»Π°Π΄Π° Π² сборникС: https://www.european-lisp-symposium.org/static/proceedings/2020.pdf #conf #jit #llvm #cps #pe

На этой Π½Π΅Π΄Π΅Π»Π΅ появился ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ self-hosted дистрибутив Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ языка с зависимыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Idris 2. На Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ этапС ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² качСствС бэкСнда ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… компиляторов Scheme: Chez, Racket ΠΈΠ»ΠΈ Gambit. Как ΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсии Idris, Π΅ΡΡ‚ΡŒ инфраструктура для создания собствСнных бэкСндов Π½Π° основС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… IR c лямбдами (ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ LC, lifted Ρ„ΠΎΡ€ΠΌΠ°, ANF, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина с замыканиями). https://github.com/idris-lang/Idris2/ Why is Idris 2 so much faster than Idris 1? https://www.type-driven.org.uk/edwinb/why-is-idris-2-so-much-faster-than-idris-1.html #fp

A Language for Describing Optimization Strategies ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования стратСгичСского пСрСписывания Ρ‚Π΅Ρ€ΠΌΠΎΠ² Π² Π΄ΡƒΡ…Π΅ Stratego. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ прСобразования Π½Π° Scala, для GPU ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ускоритСлСй. https://arxiv.org/pdf/2002.02268.pdf #optimization

Π Π°Π±ΠΎΡ‚Π° ΠΏΠΎ синтСзу ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с использованиСм Rosette (Racket). CинтСзируСтся JIT-компилятор DSL BPF (ядро Linux) Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ использован RISC-V) Synthesizing JIT Compilers for In-Kernel DSLs https://www.cs.utexas.edu/~isil/jitsynth.pdf ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ ΠΎ BPF VM: BPF: A New Type of Software http://www.brendangregg.com/blog/2019-12-02/bpf-a-new-type-of-software.html #synthesis #jit #bpf

ПолСзная ссылка для участия Π² спорах Π½Π° Ρ‚Π΅ΠΌΡƒ, ΠΊΠ°ΠΊΠΎΠΉ ЯП Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ компилятора Comparing the Same Project in Rust, Haskell, C++, Python, Scala and OCaml https://thume.ca/2019/04/29/comparing-compilers-in-rust-haskell-c-and-python/ #compiler #implementation #comparison #education #rust #haskell #cpp #python #scala #ocaml

Π Π°Π±ΠΎΡ‚Ρ‹ Ian Piumarta, участника ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° STEPS Maru ΠœΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Π½Ρ‹ΠΉ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹ΠΉ Лисп-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ язык с компилятором Π² IA32-ΠΊΠΎΠ΄. Использовался Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ STEPS. Open, extensible composition models https://www.piumarta.com/freeco11/freeco11-piumarta-oecm.pdf STEPS Toward the Reinvention of Programming, 2012 Final Report http://www.vpri.org/pdf/tr2012001_steps.pdf PEG-based transformer provides front-, middleand back-end stages in a simple compiler http://www.vpri.org/pdf/tr2010003_PEG.pdf Π¨Π΅Π΄Π΅Π²Ρ€ изящСства ΠΈ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² области Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² компиляторов. #lisp #metacompiler

Femtolisp β€” минималистичный ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π° LISP. https://github.com/JeffBezanson/femtolisp Автор стал впослСдствии Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ Julia. На femtolisp написаны лСксСр ΠΈ парсСр Julia. #lisp #interpreter

Π’ стадии call for papers ΠšΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ ΠΏΠΎ ЯП с управляСмым ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ VM MPLR 2020 ΠΠΎΡΠ±Ρ€ΡŒ 4-6, 2020 https://mplr2020.cs.manchester.ac.uk/index.php/mplr/call-for-papers Π‘ΠΈΠΌΠΏΠΎΠ·ΠΈΡƒΠΌ ΠΏΠΎ ЯП ΠΈ систСмам APLAS 2020 30 ноября 2020 https://conf.researchr.org/home/aplas-2020 #conf

Π’ Retrofitting Parallelism onto OCaml Π°Π²Ρ‚ΠΎΡ€Ρ‹ Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‚ тСхничСскиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ компромисссы Multicore Ocaml, основноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ удСляя сборщику мусора: https://arxiv.org/pdf/2004.11663.pdf #ocaml #gc #garbagecollection #multicore

НСобычный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ PEG-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ парсСра Π½Π° основС восходящСго Ρ€Π°Π·Π±ΠΎΡ€Π°. Pika parsing: parsing in reverse solves the left recursion and error recovery problems https://arxiv.org/pdf/2005.06444.pdf #parsing

Π”Π²Π΅ Π½Π΅Π΄Π°Π²Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ с участиСм Alessandro Warth. A. Warth β€” Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ систСмы oMeta ΠΈ Π°Π²Ρ‚ΠΎΡ€ извСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ Packrat-парсСров для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ лСвостороннСй рСкурсии. Incremental Packrat Parsing (ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ идСя ΠΏΠΎ использованию Pakrat-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π±ΠΎΡ€Π°) https://dl.acm.org/doi/pdf/10.1145/3136014.3136022 Recognising and Generating Terms using Derivatives of Parsing Expression Grammars ИспользованиС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… БрТозовского Π² PEG-парсСрС для пороТдСния ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ описываСмого языка. ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π·Π°Π΄Π°Ρ‡Π΅ тСстирования компилятора (fuzzing). Но особСнно интСрСсно Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ эту идСю Π½Π° PEG с иСрархичСскими структурами Π΄Π°Π½Π½Ρ‹Ρ… -- ΠΈ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ тСстовыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ для Π½ΠΈΡ…. https://arxiv.org/pdf/1801.10490.pdf #parsing

О Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ PEG-парсСров. The computational power of Parsing Expression Grammars https://arxiv.org/pdf/1902.08272.pdf #parsing

Program Analysis Π‘Π²Π΅ΠΆΠΈΠΉ (вСсна 2020) курс ΠΏΠΎ Π°Π½Π°Π»ΠΈΠ·Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, с Π½Π΅ΠΏΠ»ΠΎΡ…ΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Ρ‚Π΅ΠΌ. https://cmu-program-analysis.github.io/ #analysis

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ насыщСния равСнствами (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

Π Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ практичСскому ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² 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

Авторы ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ компилятора для Emacs Lisp Π½Π° Π±Π°Π·Π΅ libgccjit ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ основныС Ρ„Π°Π·Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ компилятора Bringing GNU Emacs to Native Code: https://zenodo.org/record/3736363/files/GCCEMACS_proceeding.pdf?download=1 #lisp

ΠšΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠ°Ρ конфСрСнция ΠΏΠΎ истории ЯП - 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

Programming Paradigms for Dummies: What Every Programmer Should Know Π›ΠΈΠΊΠ±Π΅Π· ΠΏΠΎ основным ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ ЯП: классификация, вопросы прСдставлСния состояния, конкурСнтности ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°. https://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf