Best Paper Award – GPCE 2021

Our paper Multi-Stage Pro­gram­ming with Gen­er­a­tive and An­a­lyt­i­cal Macros, by Nico­las Stucki, Jonathan Brachthäuser
Head of the SE re­search group
Jonathan Im­manuel Brachthäuser
, and Mar­tin Oder­sky was hon­ored with the Best Paper Award at the In­ter­na­tional Con­fer­ence on Gen­er­a­tive Pro­gram­ming: Con­cepts & Ex­pe­ri­ences (GPCE 2021)

SIGPLAN -- The Best Research Paper Award at the 20th ACM SIGPLAN International Conference on Generative Programming: Concepts & Experiences (GPCE 2021) is awarded to Nicolas Stucki, Jonathan Immanuel Brachthäuser, Martin Odersky for their paper Multi-stage Programming with Generative and Analytical Macros
Best Re­search Paper Award (GPCE 2021)
Video record­ing of the talk avail­able on YouTube.

Ab­stract of the Paper

In metapro­gram­ming, code gen­er­a­tion and code analy­sis are com­ple­men­tary. Tra­di­tion­ally, prin­ci­pled metapro­gram­ming ex­ten­sions for pro­gram­ming lan­guages, like MetaML and BER MetaO­Caml, offer strong foun­da­tions for code gen­er­a­tion but lack equiv­a­lent sup­port for code analy­sis. Sim­i­larly, ex­ist­ing macro sys­tems are bi­ased to­wards the code gen­er­a­tion as­pect.

In this work, we pre­sent a cal­cu­lus for macros fea­tur­ing both code gen­er­a­tion and code analy­sis. The cal­cu­lus di­rectly mod­els sep­a­rate com­pi­la­tion of macros, in­ter­nal­iz­ing a com­monly ne­glected as­pect of macros. The sys­tem en­sures that the gen­er­ated code is well-typed and hy­gienic.

We im­ple­ment our sys­tem in Scala 3, pro­vide a for­mal­iza­tion, and prove its sound­ness.

More about this pub­li­ca­tion

Fur­ther In­for­ma­tion

Pub­li­ca­tions

Multi-Stage Pro­gram­ming with Gen­er­a­tive and An­a­lyt­i­cal Macros

by Nico­las Stucki, Jonathan Im­manuel Brachthäuser, and Mar­tin Oder­sky

In Pro­ceed­ings of the 20th ACM SIG­PLAN In­ter­na­tional Con­fer­ence on Gen­er­a­tive Pro­gram­ming: Con­cepts and Ex­pe­ri­ences, pages 110–122. As­so­ci­a­tion for Com­put­ing Ma­chin­ery, 2021.

Learn More