-
Notifications
You must be signed in to change notification settings - Fork 3
/
release-notes.html
166 lines (149 loc) · 6.92 KB
/
release-notes.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<meta name="description" content="Lamdu : Lamdu - towards the next generation IDE" />
<link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">
<title>Lamdu</title>
</head>
<body>
<div id="header_wrap" class="outer">
<header class="inner">
<a id="forkme_banner" href="https://github.com/Peaker/lamdu">View on GitHub</a>
<a href="/">
<h1 id="project_title">Lamdu</h1>
</a>
</header>
</div>
<div id="main_content_wrap" class="outer">
<section id="main_content" class="inner">
<h2>Release notes</h2>
<h3 id="v0.8.1">
<a href="https://github.com/lamdu/lamdu/releases/tag/v0.8.1">
0.8.1 - Spanish, many improvements and macOS fix
</a>
</h3>
<p><em>2022.05.29</em></p>
<ul>
<li> Spanish translations by Pablo Duboue </li>
<li> Fix crashes in Apple silicon macs </li>
<li> Multiple REPLs support </li>
<li> Nested record parameters/variables destructure sugar </li>
<li> Single-line layout for if-expressions when they fit </li>
<li> Initial nominal types pane. Currently can only view definitions but not edit them </li>
<li> Hamburger menu when window is too narrow for status bar items </li>
<li> Various WYTIWYS UX improvements, bug fixes, and changes to Lamdu's standard library </li>
</ul>
<h3 id="v0.8.0">
<a href="https://github.com/lamdu/lamdu/releases/tag/v0.8.0">
0.8.0 - Natural language support and new syntax
</a>
</h3>
<p><em>2021.09.08</em></p>
<ul>
<li> Natural languages support (initially English, Italian, and Hebrew) </li>
<li> Abbreviations support (when abbreviated names clash, full names are used instead) </li>
<li> Type error blame support (key to accept type and move the type error elsewhere) </li>
<li> Redesigned syntax for better typability and completions </li>
<li> Significantly improved performance and UI responsiveness </li>
<li> New auto-names scheme based on isomorphic naming </li>
<li> The exported JS code supports latest node.js versions </li>
<li> Various other bug fixes and code improvements </li>
</ul>
<h3 id="v0.7.1">
<a href="https://github.com/lamdu/lamdu/releases/tag/v0.7.1">
0.7.1 - First bugfix release!
</a>
</h3>
<p><em>2018.11.19</em></p>
This release fixes the following bugs:
<ul>
<li> Linux: In some setups with some input methods, typing did not work. </li>
<li> macOS: The app bundle opened in low resolution mode. </li>
<li>
<a href="https://trello.com/c/OuaLvwiJ/445-wrong-parenthesis">
A missing parenthesis bug
</a>
</li>
<li>
<a href="https://trello.com/c/F02QMHQV/444-wytiwis-violation">
A bug causing operators to be inserted at wrong position
</a>
</li>
<li>
<a href="https://trello.com/c/tjYN3T0D/446-red-cursor-when-picking-hole-result-on-top-popup-menu">
A navigation bug when the hole results popup is placed above the hole
</a>
</li>
</ul>
<h3 id="v0.7">
<a href="https://github.com/lamdu/lamdu/releases/tag/v0.7">
0.7 - Lamdu's first release!
</a>
</h3>
<p><em>2018.10.24</em></p>
Initial release of Lamdu, including 7 key features:
<ul>
<li>
<strong>WYTIWYS projectional editing</strong>.
Projectional editing ensures that syntax errors and name errors are impossible to make,
while the What-You-Type-Is-What-You-See text-like interface makes the experience intuitive and familiar.
Note that this concept isn't unique to Lamdu -
<a href="https://www.jetbrains.com/mps/">MPS</a> also implements a mostly WYTIWYS approach.
</li>
<li>
<strong>A novel UI framework for keyboard oriented editing of rich structured data</strong>,
with responsive layout (the code's layout adapts to the screen or window's width)
and animations for structural edits (making changes easier to follow).
</li>
<li>
<strong>Live-reloading for pure computations</strong>.
Lamdu employs a distinction between pure computations and effectful code,
like <a href="http://haskell.org/">Haskell</a>,
and uses this distinction to enable safe live programming,
which performs live-reloading only for pure computations,
while requiring an explicit action to execute effectful programs.
</li>
<li>
<strong>Live programming with value annotations displayed under subexpressions</strong>
(rather than only a single REPL result).
Note that <a href="https://llk.media.mit.edu/papers/archive/ch-phd.pdf">Flogo 2</a>
appears to be the first project to come up with this notation.
</li>
<li>
<strong>A novel approach for type-errors</strong>:
When filling a hole with a term with a mismatching type,
it is wrapped in a "fragment" (aka non-empty hole),
so that type inference keeps working continuously everywhere.
</li>
<li>
<strong>A novel decentralized solution for cross-module blame assignment for type errors</strong>.
For every definition, Lamdu remembers the types for all of its dependencies.
When a dependency's type changes, type inference still works with the saved type,
with an "update" action offered for the type-mismatch.
</li>
<li>
<strong>Projectional Syntactic Sugar</strong>.
The lower-level AST, which we call "Lamdu Calculus", is checked for patterns which are sugared.
Sugaring happens automatically, reducing burdens of choice and manual conversion between equivalent syntax forms when making changes.
</li>
</ul>
</section>
</div>
<div id="footer_wrap" class="outer">
<footer class="inner">
<p>Published with <a href="http://pages.github.com">GitHub Pages</a></p>
</footer>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("Lamdu");
pageTracker._trackPageview();
} catch(err) {}
</script>
</body>
</html>