forked from GrammaTech/sel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchangelog.texi
231 lines (186 loc) · 8.19 KB
/
changelog.texi
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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
@c https://keepachangelog.com/en/0.3.0/
@c
@c Any change in the version number should merit an entry in this
@c changelog. Especially minor version or greater or anything that
@c fixes a bug or a security issue. Any breaking changes ABSOLUTELY
@c must be mentioned in this changelog.
@c
@c Format for each entry is as follows.
@c
@c @subsection YYYY-MM-DD v.X.X.X -- Textual Description
@c @cindex changelog-YYYY-MM-DD
@c @cindex v.X.X.X
@c
@c List of breaking or important changes. Every breaking change
@c should be accompanied by an example of how to change existing
@c code in response to the change.
@c
@c Changelog entries with multiple changes should grouped them by:
@c - Added
@c - Changed
@c - Deprecated
@c - Removed
@c - Fixed
@c - Security
@c
SEL will use @url{https://semver.org/,semantic versioning} to
determine increments to version numbers. This ChangeLog will be
roughly organized as described at
@url{https://keepachangelog.com/en/0.3.0/,Keep a ChangeLog}. Most
importantly every version will include at least one ChangeLog entry,
and the entries will be sorted in reverse chronological order with the
most recent at the top. Every entry will be named and indexed by date
and version number. Working notes may be accumulated in a special
``Unreleased'' section at the top of the ChangeLog.
@appendixsec 2019-03-20 v0.1.3 -- Unreleased
@cindex changelog-2019-03-20
@cindex v0.1.3
@itemize
@item
A new software object implementation for parseable source code has
been added based on GitHub's tree sitter incremental parsing
framework. This replaced the previous JavaScript and Python software
objects (based on acorn and the built-in Python language parser
respectively), and adds new non-clang C/C++ software objects.
@item
The @code{source} software object has been renamed to @code{IR} to
more accurately reflect the types of software it is used to represent.
@item
Projects no longer build in temporary directories by default. Instead
calls to @code{phenome} will now cause projects to re-build in their
original directory (i.e., @code{project-dir}). There are two ways to
control this new behavior (and optionally revert to the old behavior).
First, by setting the @code{*build-projects-in-temporary-directories*}
variable to non-nil the old behavior of building in a new temporary
directory on every call to phenome is restored. Alternately for more
fine-grained control the new @code{phenome-dir} method can be
customized for any class that is subtypep of project.
@end itemize
@appendixsec 2018-12-18 v0.1.2 -- Unreleased
@cindex changelog-2018-12-18
@cindex v0.1.2
@itemize
@item
Differences and merges are now supported on projects.
@item
Non-code @code{other-files} in software projects are now represented
as @code{simple} software objects. This allows for differencing and
merging of these non-code files when differencing and merging
projects.
@item
Simple software objects now preserve permissions on their files.
@item
The @code{phenome} method on software projects no longer requires that
the @code{*build-dir*} variable be set and exist. Build directories
are now created on demand if required. This change removes the
following no longer required public variables and methods from
software projects:
@itemize
@item @code{*build-dir*}
@item @code{with-build-dir}
@item @code{with-temp-build-dir}
@item @code{full-path}
@end itemize
@item
The @code{ensure-path-is-string} function has been removed from
@code{sel/utility} as it provides no functionality beyond the standard
@code{namestring} function.
@end itemize
@appendixsec 2018-11-30 v0.1.1 -- Unreleased
@cindex changelog-2018-11-30
@cindex v0.1.1
@itemize
@item Removed backend-specific initargs from project software objects
Backend-specific initargs such as :clang-class, :java-class, or
:javascript-class on projects have been replaced with :component-class.
Any calls to @code{make-instance} with projects must now utilize
:component-class instead of these backend-specific alternatives.
@end itemize
@appendixsec 2018-11-06 v0.1.0 -- Use package-inferred-system
@cindex changelog-2018-11-06
@cindex v0.0.3
SEL now uses the package-inferred-system feature of ASDF (see
@url{https://common-lisp.net/project/asdf/asdf/The-package_002dinferred_002dsystem-extension.html#The-package_002dinferred_002dsystem-extension}).
This implicitly defines a system for every source file in the
repository. We then explicitly define a package for every source file
at the top of the source file. These packages explicitly list the
dependencies of the source file (with :use) and the symbols exported
by the source file (with :export).
The result is:
@itemize
@item
An explicit flow of dependencies within the SEL project as opposed to
a single giant namespace in/from which all symbols are created and
used. This refactoring exposed some instances of circular
dependencies and cases where the intended symbols was actually not
being used.
@item
The ability to load specific subsets of SEL. E.g., projects without
instrumentation/tracing no longer need to build/load trace-db,
projects without the rest api don't need to load a web-server,
projects without test-suite don't need to load run-program which can
cause problems on some lisps.
@item
Much faster load/compile times in many cases (due to better physical
design and finer granularity of dependencies).
@end itemize
Instead of simply using the SOFTWARE-EVOLUTION-LIBRARY package clients
should now use the specific packages they need. Packages are divided
into ``@code{software}'' and ``@code{components}'' packages. So,
e.g., a project using Clang software objects and using lexicase
selection would most likely use the following packages.
@lisp
(defpackage :example
(:use :common-lisp
:software-evolution-library
:software-evolution-library/utility
:software-evolution-library/software/parseable
:software-evolution-library/software/source
:software-evolution-library/software/clang
:software-evolution-library/components/lexicase))
@end lisp
Note that the above example uses
@code{sel/sw/@{ast,parseable,source@}} as well as @code{sel/sw/clang}.
The ast, parseable, and source software objects are all ancestors of
clang software objects so the related packages export symbols that are
likely useful for anyone using the clang software object.
This release also removes any use of qlot from SEL's CI infrastructure
and deprecates the USER_QUICK_LISP environment variable which was
redundant with the QUICK_LISP environment variable.
@appendixsec 2018-10-17 v0.0.2 -- Unreleased
@cindex changelog-2018-10-17
@cindex v0.0.2
@itemize
@item Removed tool-specific code formatting methods from software objects
All calls to tool-specific formatting routines (e.g. @code{clang-tidy},
@code{clang-format}, etc.) should be replaced with the generic
@code{format-genome} method.
@end itemize
@appendixsec 2018-08-21 v0.0.1 -- Unreleased
@cindex changelog-2018-08-21
@cindex v0.0.1
@itemize
@item @b{Change @code{build-target} to @code{artifacts}}
Changed the software @code{project} class as well as
@code{clang-project} and @code{java-project} to replace the
@code{build-target} field with a @code{artifacts} field. This changes
what was previously a single string to a list of strings so that
projects may now build multiple artifacts (e.g., an executable and
multiple libraries). This also changes the use of the project
@code{build-command}. Previously the @code{build-target} was appended
to the @code{build-command} as a target, now the @code{build-command}
should be self-contained and will be run as is.
@item @b{Remove @code{current-file} and @code{with-current-file}}
Changed the software @code{project} class to remove the
@code{current-file} behavior. This removes some potentially confusing
behavior in which projects would override @code{no-applicable-method}
to dispatch to the current-file (if set). This makes it hard to have
software objects inherit from both a project and from the type of that
project.
@end itemize
@appendixsec 2018-07-25 v0.0.0 -- Initial Release to Quicklisp
@cindex changelog-2018-07-25
@cindex v0.0.0
Initial changelog entry for version v.0.0.0 of the
SOFTWARE-EVOLUTION-LIBRARY (SEL) Package. This is the version
initially appearing in the 2018-07 Quicklisp release.