<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://mw.hh.se/wg211/index.php?action=history&amp;feed=atom&amp;title=WG211%2FM23Ballantyne</id>
	<title>WG211/M23Ballantyne - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://mw.hh.se/wg211/index.php?action=history&amp;feed=atom&amp;title=WG211%2FM23Ballantyne"/>
	<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M23Ballantyne&amp;action=history"/>
	<updated>2026-04-05T21:09:23Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M23Ballantyne&amp;diff=2607&amp;oldid=prev</id>
		<title>Jeremy-y: Add Michael&#039;s slides</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M23Ballantyne&amp;diff=2607&amp;oldid=prev"/>
		<updated>2024-03-30T23:46:31Z</updated>

		<summary type="html">&lt;p&gt;Add Michael&amp;#039;s slides&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:46, 31 March 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot;&gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To prototype an architecture for such a system, I have developed the &amp;lt;code&amp;gt;syntax-spec&amp;lt;/code&amp;gt; &amp;quot;language workbench as a library&amp;quot; on top of Racket&amp;#039;s macro system. &amp;lt;code&amp;gt;syntax-spec&amp;lt;/code&amp;gt; supports both whole-DSL specification, providing support for the DSL&amp;#039;s backend compiler, as well as Racket&amp;#039;s conventional lightweight hygienic macros on top of the DSL. The ideas behind &amp;lt;code&amp;gt;syntax-spec&amp;lt;/code&amp;gt; should be portable to other languages with macro systems, such as Rust and Scala, but this will require some additional work to reconcile with the syntax and type systems of these languages.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To prototype an architecture for such a system, I have developed the &amp;lt;code&amp;gt;syntax-spec&amp;lt;/code&amp;gt; &amp;quot;language workbench as a library&amp;quot; on top of Racket&amp;#039;s macro system. &amp;lt;code&amp;gt;syntax-spec&amp;lt;/code&amp;gt; supports both whole-DSL specification, providing support for the DSL&amp;#039;s backend compiler, as well as Racket&amp;#039;s conventional lightweight hygienic macros on top of the DSL. The ideas behind &amp;lt;code&amp;gt;syntax-spec&amp;lt;/code&amp;gt; should be portable to other languages with macro systems, such as Rust and Scala, but this will require some additional work to reconcile with the syntax and type systems of these languages.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Slides: [[Media:ballantyne-slides.pdf | ballantyne-slides.pdf]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jeremy-y</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M23Ballantyne&amp;diff=2554&amp;oldid=prev</id>
		<title>Jeremy-y: Add Michael Ballantyne&#039;s talk details</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M23Ballantyne&amp;diff=2554&amp;oldid=prev"/>
		<updated>2024-03-13T06:27:04Z</updated>

		<summary type="html">&lt;p&gt;Add Michael Ballantyne&amp;#039;s talk details&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== A language workbench as library (Michael Ballantyne) ==&lt;br /&gt;
&lt;br /&gt;
Systems such as Racket and Spoofax allow programmers to develop DSLs with custom syntax, static semantics, compilation, and IDE support. Unfortunately, these technologies mostly have not reached mainstream programmers. I argue that to reach mainstream use, such a language-oriented programming system must satisfy several conditions: (1) be incrementally adoptable in an existing, widely-used language (2) enable its users to gradually acquire the skill of creating DSLs, and (3) provide excellent IDE support for DSLs.&lt;br /&gt;
&lt;br /&gt;
To prototype an architecture for such a system, I have developed the &amp;lt;code&amp;gt;syntax-spec&amp;lt;/code&amp;gt; &amp;quot;language workbench as a library&amp;quot; on top of Racket&amp;#039;s macro system. &amp;lt;code&amp;gt;syntax-spec&amp;lt;/code&amp;gt; supports both whole-DSL specification, providing support for the DSL&amp;#039;s backend compiler, as well as Racket&amp;#039;s conventional lightweight hygienic macros on top of the DSL. The ideas behind &amp;lt;code&amp;gt;syntax-spec&amp;lt;/code&amp;gt; should be portable to other languages with macro systems, such as Rust and Scala, but this will require some additional work to reconcile with the syntax and type systems of these languages.&lt;/div&gt;</summary>
		<author><name>Jeremy-y</name></author>
	</entry>
</feed>