Didier Verna's scientific blog: Lisp, Emacs, LaTeX and random stuff.

Tag - release

Monday, January 28 2013

FiXme 4.2 is out

I'm pleased to announce that, after more than two years, I've managed to put up a very small release of FiXme (my collaborative annotations tool for LaTeX2e) in which I didn't even author the two included changes...

Keep the faith. FiXme is still alive !

New in this veresion (4.2):

** Improve Danish translation
** Fix buglet in redefinition of \@wrindex
reported by Norman Gray.


Get it at the usual place.

Tuesday, October 23 2012

Declt 1.0b15 "Kyoto" is out

This is Declt 1.0b15, the "Kyoto" release... Declt is a reference manual generator for Common Lisp libraries.

This version underwent a major internals overhaul, required by some of the new features described below:

• Packages sections now advertise all definitions instead of just the symbols naming them. They also advertise their use-list and used-by-list, with cross-references.
• Conditions, structures and classes now advertise their sub- and super-classes, direct methods, initargs and slots, with cross-references.
• Slots documentation include docstring, type, initargs, initforms, readers and writers with cross-references.
• Declt now documents symbol macros and compiler macros.
• The *LINK-FILES* special is gone (M-x all-hail-purely-functional-style).
• All ASDF components now advertise their descriptions and long descriptions, if any.
• Docstrings are displayed in a more reader-friendly fashion.
• Documentation entries for methods are nested within the corresponding generic function entry.

Grab it at the usual place.

Wednesday, September 26 2012

Clon 1.0b23 is out

A new version of Clon, the Command-Line Options Nuker is out.

Amongst other things, the following improvements have been made:

• Support for ABCL has been updated, now that it provides a full MOP.
• A workaround for SBCL's CC environment variable problem has been implemented. If the variable is not set (required for sb-grovel), Clon now switches to restricted mode instead of aborting.
• The DUMP macro has been extend to accept a &rest argument that will be passed on to the underlying, implementation-specific, dumping facility.
• A contrib directory has been added, for storing unapplied patches, suggestions etc.

Grab it at the usual place.

Tuesday, September 25 2012

Declt 1.0b14 is out

I've just released a new version of Declt, my reference manual generator for ASDF systems.

This release containts some improvements based on Sabra Crolleton's feedback. The most notable improvements are support for two new license types (MIT and LGPL), a new :DECLT-NOTICE keyword argument that gives you control on the "automatically generated by Declt" notice that appears in the reference manuals, and a bug fix (missing support for empty lists in lambda-lists).

Grab it at the usual place.

Monday, June 4 2012

Declt 1.0b13 is out

I've just released a new version of Declt, my reference manual generator for ASDF systems. This release includes some uninteresting internals update, plus an important bug fix: there were two calls to FIND-METHOD missing an ERRORP flag set to nil, leading to Declt throwing an error where it shouldn't have.

Grab it at the usual place.

Tuesday, May 22 2012

Clon 1.0b22 is out

A new version of Clon, the Command-Line Options Nuker is out.

The most important change in this release is the support for LispWorks, which brings the number of supported implementations to 8. One left to go, and I may eventually switch to RC status. Thanks to Martin Simmons for providing a fully functionnal version of LW 6.1. As for CLISP and Allegro, there is an optional dependency on CFFI for LispWorks.

Two backward incompatible changes that may affect you:

• Variables renamings: *current-context* has been renamed *context*, and *default-synopsis* has been renamed *synopsis*. This should remain transparent unless you're using Clon in a somewhat advanced way.
• clon:exit has been upgraded to SBCL's new quitting protocol. If you use this function (or if you want to compile the demo programs), please upgrade to SBCL 1.0.57.

Finally, support for terminal autodetection and stream handling in general has been improved for all implementations.

Grab it at the usual place.

Monday, March 12 2012

Clon 1.0b21 is out

One year between b19 and b20. 4 days between b20 and b21...

This new version of Clon introduces support for a new compiler, Allegro Common Lisp, in both standard and modern form. Support for dumping is only rudimentary for ACL (although it's only a marginal feature of the library). The dump macro uses Allegro's dumplisp mechanism to dump a lisp image which is not directly executable (full application delivery is complicated and only available in the Enterprise edition). Apart from that, the rest should work fine. As in the case of CLISP, Allegro may benefit from the presence of CFFI in order to provide terminal autodetection. This is an optional dependency only.

Grab it at the usual place.

Thursday, March 8 2012

Clon 1.0b20 is out

I'm happy to announce a new release of Clon, the Command-Line Options Nuker for standalone Common Lisp executables. In addition to a lot of uninteresting code and infrastructure changes, this new release comes with several important improvements and new features.

At the end-user level

• there is a new error handler available via the --clon-error-handler option, called "interactive". This error handler provides the same restarts as the one called "none" (which actually triggers the Lisp debugger), but in a less frightening way for end-users not knowing about Lisp at all. In particular, the error and restart messages are more readable and you don't see a Lisp stack anywhere. See the end-user manual and the user manual for more information.
• there is a new option called --clon-lisp-information which, as its name suggests, provides information about the underlying Lisp (implementation type and version). This will in fact be more useful for developers than for end-users, but it's still and end-user level feature. See the end-user manual for not much more information.

At the user-level

• Clon now provides a command-line polling API through the functions cmdline-options-p and cmdline-p. See the user manual for more information.
• Support for using Clon interactively, that is, without dumping executables has been improved. This is mostly useful for debugging purposes. See the user manual for more information.
• Clon now provides a compile-time / run-time unified configuration facility thanks to a variable named cl-user::com.dvlsoft.clon.configuration that is handled before the ASDF system is loaded. Thanks to this, Clon is now able to communicate its own indentation information to (X)Emacs directly (thanks to a process that I've previously described here), and also handles portability problems in a smoother way (see below).
• One of the available configuration options is called :restricted mode. In this mode, Clon never attempts to communicate with ttys via ioctl calls, at the expense of terminal autodetection (size and highlighting). This is implemented by making a termio ASDF module conditionally loaded in the system definition. There are cases where Clon will switch to restricted mode automatically (e.g. when using CLISP compiled without FFI support). However, some other situations are more problematic, for instance when using SBCL under MinGW, in which case the SB-GROVEL module is available but doesn't work. In such situations, it is necessary to configure Clon explicitely for restricted mode before loading the system. See the user manual for more information.

That's it. Grab it at the usual place. Yesterday, I realized that it's been slightly more than a year since the b19 release. Gee, time flies like the wind...

Tuesday, January 17 2012

Patcher 4.0 is released

I'm happy to announce the release of Patcher version 4.0. This is a major release introducing many new features and enhancements.

Patcher is a tool designed to automate and ease the maintenance of archive-based projects. It provides assistance in building, reporting and committing patches, as well as in handling the corresponding ChangeLog entries, for example by creating skeletons. Patcher is the official tool for XEmacs development.

NEW FEATURES

• Support floating projects and temporary relocation allowing to use the same project descriptor for various directories.
• Support for automatic detection of submodules via the :submodule-detection-function project option and the patcher-detect-submodules function. Currently supported RCS submodules are Mercurial and Git via the functions 'patcher-hg-detect-submodules.
• Support ephemeral ChangeLogs thanks to a new :change-logs-status project option. Ephemeral ChangeLogs are not stored in ChangeLog files, but exist only temporarily for mail or log message insertion (See ChangeLogs Status in the documentation).
• ChangeLog minor mode providing easy navigation through the mail/ChangeLog buffers cycle via C-c C-p n, C-c C-p p, C-c C-p N, C-c C-p P and C-c C-p m (See ChangeLogs Navigation in the documentation).
• Support for switching to mail buffer and inserting ChangeLogs at once via C-c C-p l from ChangeLog buffers.
• patcher-mail-insert-change-logs gets a prefix argument allowing to temporarily change the ChangeLogs appearance. It also supports inserting ChangeLogs even when the project is set not to.
• Additional binding for patcher-logmsg-commit: C-c C-p c
• Commit command buffer is now editable Commit is done via C-c C-p c or C-c C-c (patcher-cmtcmd-commit).
• Fontification of commit command and log message buffers with comment syntax and initial informative help. See new Patcher faces.
• Support for commit or log message canceling via C-c C-z.
• Support for project abortion via C-c C-p k or C-c C-k in all relevant buffers, including ChangeLogs.
• Support Subject: header modification in mail adaptation routines via a new project option :subject-rewrite-format.
• Support project-wide dynamic subject modification via C-c C-p S in both mail and log message buffers.
• Implement :kill-source-files-after-sending project option
• Support for source file saving
• Support for CVS diff's broken exit code policy via a new project option: :ignore-diff-status.

FIXES AND IMPROVEMENTS

• Improved support for temporary subprojects making them behave like permanent ones (with a specific subdirectory and set of files).
• Much better error handling including exit code checking for external processes.
• Improved support for overlapping Patcher instances through buffer and file referencing for both ChangeLog and source files.
• Documentation rewrite and sections organization cleanup
• More checks for project consistency including missing or spurious ChangeLog entries, source diffs, undiffable and uncommittable projects etc.
• Improved project rediffing including support for partially generated ChangeLog skeletons, and interactive prompting for skeleton un/re-generation.

BACKWARD INCOMPATIBLE CHANGES

• Mercurial themes renamed from 'mercurial to 'hg in order to remain consistent with the other RCS theme names.
• ChangeLogs insertion in mail buffers rebound to C-c C-p l
• Compressed ChangeLogs insertion in logmsg buffers rebound to C-c C-p L
• Removed directory-sep-char hacks until the need for it raises again. Probably better implemented via project options anyway.
• Diff commands can no longer be changed from patcher-mail-adapt but instead, the prefix argument allows for temporary subproject specification.
• patcher-*-subproject entry points removed since they are no longer needed (see above).
• Removed :kill-source-file-after-diffing option
• :kill-source-files-after-sending renamed to :kill-sources-after-sending
• patcher-mail-check-change-logs-insertion is now a project option named :check-change-logs-insertion.
• patcher-mail-check-commit-action is now a project option named :check-commit.
• :change-logs-diff-command option now understands nil instead of 'diff
• The 'packed ChangeLogs appearance has been renamed to 'pack

Monday, November 28 2011

CL-RCFiles 2.0

This very small Common Lisp library provides a way to add initialization files to ASDF systems. Every time ASDF loads <system>, one or several corresponding <system>.lisp files are loaded automatically afterwards. This lets you conditionally plug in additional behavior on a per-system basis without cluttering up any global Common Lisp init file.

For backward-compatibility, files found directly in the rc/ directory are considered to be post-loading initialization files.

You can modify the rc-files location by changing the values of the global variables *directory*, *pre-directory*, and *post-directory*.

Get it here.

Wednesday, June 29 2011

Declt 1.0b12 is out

I've just released the next version of Declt, my reference manual generator for ASDF systems.

This release includes some fixes for the Info format target but most notably, support for documenting (generic) writer functions and methods. When it makes sense, the documentations for func and (setf func) are grouped together. Getting closer to an official 1.0 stable version...

Grab it here, and enjoy!

Tuesday, May 31 2011

Declt 1.0b11 is out

I've just released a new version of Declt, my Texinfo reference manual generator for ASDF systems. This release contains only one bugfix: when trying to create links to source files, Declt now checks whether the files actually exist or not.

Tracking this bug down had the side-effect of exhibiting a misfeature of SBCL's introspection facility: the COPY-<struct> functions (automatically generated by defstruct calls) have their definition source set to target-defstruct.lisp which is an SBCL source file. It would make more sense to set it to the file containing the defstruct call instead, as is already the case for constructors, predicates and accessor functions. Patch sent to the SBCL developers.

Wednesday, April 27 2011

XEmacs 21.5.30 "garlic" is released

At long last, there is a new release of XEmacs 21.5. A lot of stuff has happened in this release, but the most important thing is that this is the last GPLv2 version of XEmacs. Future versions (including the current trunk) will be licensed GPLv3 or later. In fact, the first GPLv3 release, 21.5.31, is expected to follow this one by a couple of days. Thanks mostly to Aidan Kehoe, I'm also quite happy that XEmacs Lisp is more Common Lisp'y than ever.

Wednesday, February 23 2011

Declt 1.0b9 is out

The next edition of Declt, the Documentation Extractor from Common Lisp to Texinfo, is out. In this release:

• Bugfix: rendering the documentation for methods with EQL specializers didn't work.
• Feature: licensing and copyrighting the reference manual is now optional. Licenses currently supported are BSD and GPL.
• Declt now generates its own reference manual by default.
• Some package infrastructure changes that should remain transparent.

Grab it here

Happy documenting!

Wednesday, February 9 2011

Clon 1.0b19 is out

Clon version 1.0b19 has just been released. This version comes with a couple of fixes related to error handling and a switch from the GPL to the BSD license. Grab it here.

Tuesday, January 25 2011

Optional ASDF system dependencies (Clon v1.0b18)

Clon v1.0b18 is now out. Compared to the previous version, the only small bit of change is the fact that the CLISP implementation now depends only optionally on cffi, whereas that dependency was mandatory before. Doing this is actually quite simple but raised the question of optional ASDF system dependencies, a topic on which there's quite a bit to be said.

A bit of context first. Clon has a terminal autodetection feature which allows it to automatically highlight its output on a tty (see --clon-highlight=auto) and also compute the output line width in case the COLUNMS environment variable is not set. This feature requires an ioctl call which is beyond Lisp. Since one of my goals is to have as few dependencies as possible (zero being the ideal number), I looked at compiler-specific solutions to this problem. The result is that SBCL, CMU-CL, CCL and ECL provide solutions almost out-of-the-box: SBCL has a grovel contributed module, CMU-CL and CCL already have system bindings and ECL has its own ffi interface. The ABCL port doesn't support terminal autodetection yet, but that's another (Java) story. The only black sheep in the picture is CLISP which, as far as I can tell, neither has a native binding for ioctl, nore any built-in grovel facility, hence the need for cffi.

Previously, my system definition file was like that:

#+clisp (asdf:operate 'asdf:load-op :cffi-grovel)

(asdf:defsystem :com.dvlsoft.clon
#| ... |#
:depends-on (#+clisp :cffi)
:components ((:file "package")
#+clisp
(:module "clisp"
:depends-on ("package")
:components ((cffi-grovel:grovel-file "constants")))
(module "src"
:depends-on ("package" #+clisp "clisp")
:components #| ... |#)))

And then later, I had a file with the concerned utility function:

(defun stream-line-width (stream)
#+clisp (#| CLISP implementation |#)
#| etc. |#)

After that, I started looking at ways to make the dependency on cffi optional. After all, it makes sense to avoid that dependency at the cost of not being able to autodetect terminals.

One thing I fell on almost by accident is ASDF's :weakly-depends-on keyword. Here is an interesting thread about it. It was an accident because that feature is not documented :-( People, however, have very mitigated feelings about it, as shown in this other thread (syntax and semantics both appear somewhat shaky and underspecified). Besides, the aparent behavior is that if A weakly depends on B and B is not present, then A is operated anyway. So I could probably have my "src" module weakly depend on the "clisp" one, but that doesn't change the fact the "clisp" module should not be included at all if cffi is not there.

In the same thread, somebody proposes another kind of dependency called :contigent-on which looks closer to what I would need for the "clisp" module: a module the contingency of which is not present will not be processed. This new kind of dependency doesn't seem to be implemented yet, however.

So, all of this seems a bit frightening. Too borderline for my taste. Fortunately, my solution is much simpler, although probably not universal.

This first thing to do is only attempt to load cffi-grovel:

(eval-when (:load-toplevel :execute)
(asdf:missing-component ()
(format *error-output* "~
*********************************************************************
* Clon will be loaded without support for terminal autodetection.
*********************************************************************"))))

After that, if loading it were successful, we end up with cffi as a feature, so we can just conditionalize on that:

(asdf:defsystem :com.dvlsoft.clon
#| ... |#
:depends-on (#+(and clisp cffi) :cffi)
:components ((:file "package")
#+(and clisp cffi)
(:module "clisp"
:depends-on ("package")
:serial t
:components ((cffi-grovel:grovel-file "constants")))
(module "src"
:depends-on ("package" #+(and clisp cffi) "clisp")
:components #| ... |#)))

One last problem remains however: what to do in the source code, for the feature-dependent parts. Conditionalizing an ASDF system may indeed lead to trouble: for instance, what would happen if the function stream-line-width was compiled with cffi around, and later used in a context where it is not? To be on the safe side, what you really need is to dynamically check for the feature. One possible solution is this:

1. move all feature-dependent code to the "clisp" module and make that a protocol,
2. everytime you need to access the feature, dynamically check whether the protocol functions are fbound.

In my specific case, what I did was to implement a CLISP-specific version of stream-line-width, called clisp/stream-line-width and put it in a new file in the "clisp" module, now defined as follows:

#+(and clisp cffi)
(:module "clisp"
:depends-on ("package")
:serial t
:components ((cffi-grovel:grovel-file "constants")
(:file "util")))

Then, the original function is rewritten like this:

(defun stream-line-width (stream)
#+clisp (when (fboundp 'clisp/stream-line-width) (clisp/stream-line-width stream))
#| etc. |#)

So now I think I'm on the safe side, and Clon has zero mandatory dependency again...

Monday, January 24 2011

Clon 1.0b17 is out

I'm happy to announce the release of Clon version 1.0b17. This version notably introduces support for ABCL and expands the documentation in the portability section. Grab it here.

Thursday, December 16 2010

DoX 2.2 is released

Hello, I'm happy to announce the release of DoX v2.2. DoX is a set of extensions to the Doc package, for LaTeX2e class and style authors.

New in this release: the ability to create new control-sequence based documentation items (for instance LaTeX lengths).

Tuesday, December 14 2010

CurVe 1.16 is out

Hello,

I'm happy to announce the release of CurVe 1.16. CurVe is a CV class for LaTeX2e.

New in this release:

- An examples directory
- New \text macro to insert plain text in the middle of rubrics,
- Support for openbib option which was implicit before
- Fix incompatibilities with the splitbib package
- Handle the bibentry/hyperref incompatibility directly
- Implement old font commands letting packages using them (e.g. fancyhdr) work correctly

Friday, December 3 2010

FiNK 2.2 is out

Hello,

I'm happy to announce the release of FiNK 2.2. FiNK is the LaTeX2e File Name Keeper. New in this release: FiNK is now compatible with the memoir class.

Grab it here

- page 1 of 2

Copyright (C) 2008 -- 2013 Didier Verna didier@lrde.epita.fr