Next: General Lisp Advice, Previous: Software Evolution Library Index, Up: Top [Contents][Index]
SEL will use semantic versioning to determine increments to version numbers. This ChangeLog will be roughly organized as described at 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.
source
software object has been renamed to IR
to
more accurately reflect the types of software it is used to represent.
phenome
will now cause projects to re-build in their
original directory (i.e., project-dir
). There are two ways to
control this new behavior (and optionally revert to the old behavior).
First, by setting the *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 phenome-dir
method can be
customized for any class that is subtypep of project.
other-files
in software projects are now represented
as simple
software objects. This allows for differencing and
merging of these non-code files when differencing and merging
projects.
phenome
method on software projects no longer requires that
the *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:
*build-dir*
with-build-dir
with-temp-build-dir
full-path
ensure-path-is-string
function has been removed from
sel/utility
as it provides no functionality beyond the standard
namestring
function.
Backend-specific initargs such as :clang-class, :java-class, or
:javascript-class on projects have been replaced with :component-class.
Any calls to make-instance
with projects must now utilize
:component-class instead of these backend-specific alternatives.
SEL now uses the package-inferred-system feature of ASDF (see 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:
Instead of simply using the SOFTWARE-EVOLUTION-LIBRARY package clients
should now use the specific packages they need. Packages are divided
into “software
” and “components
” packages. So,
e.g., a project using Clang software objects and using lexicase
selection would most likely use the following packages.
(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))
Note that the above example uses
sel/sw/{ast,parseable,source}
as well as 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.
All calls to tool-specific formatting routines (e.g. clang-tidy
,
clang-format
, etc.) should be replaced with the generic
format-genome
method.
build-target
to artifacts
Changed the software project
class as well as
clang-project
and java-project
to replace the
build-target
field with a 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
build-command
. Previously the build-target
was appended
to the build-command
as a target, now the build-command
should be self-contained and will be run as is.
current-file
and with-current-file
Changed the software project
class to remove the
current-file
behavior. This removes some potentially confusing
behavior in which projects would override 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.
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.
Next: General Lisp Advice, Previous: Software Evolution Library Index, Up: Top [Contents][Index]