Version 3.1.7.7 has been pushed

Elias Pipping pipping.elias at icloud.com
Mon Aug 22 00:53:16 UTC 2016


Dear Robert, dear list,

I’m happy to see the first changes to run-program in ASDF-3.1.7.7. I’m now working more pragmatically towards making others mergeable. As usual, the list can be viewed at

  https://gitlab.common-lisp.net/asdf/asdf/merge_requests/3

As of right now, it looks like this:

  8e4f7fd Add and use process-info class
  ec74b27 Add %if-on-lispworks?+
  ba8c24e Bug fix: Exit code with LispWorks 7
  a35fbe2 Bug fix: Store exit code with Allegro CL
  104da21 Change :if-*-exists default to :supersede
  4ef7409 Add and use not-implemented-error
  6359a4b Add file-stream*-p
  c2d5de3 Add and use parameter-error. Reorganise errors.
  7ae0bcf Fix warnings on ABCL, etc.
  fb3dd9a Add and use close-streams
  4971606 Add %process-info-*put getters
  c7570da Tests: Cover %run-program and %wait-process-result
  1f43e5d Do not pass unnecessary keywords to SBCL

  b277485 Export and document (%)wait-process-result
  63f5b27 Tests: wait-process-result is now exported
  c2a5e08 Add process-alive-p and %process-status
  2832ac8 Tests: Cover process-alive-p / %terminate-process
  dcc1288 Add terminate-process and %posix-process-send-signal
  e950e02 Tests: Cover terminate-process

It’s again made up of two parts, the first is essentially cleanup, fixes, and tests for existing features. The second half is new features and tests for these features.

The second is definitely not ready to be merged(*), while the first half is ready to be merged modulo (at least that’s what I expect) additional cleanup, renames, moves, etc.. (once those are sorted out I would add another branch containing only those commits and their fixes). I’ll name two issues myself further down (with commit ec74b27 and fb3dd9a).

The new tests are hooked up to the `make test` mechanism; they will only run on unix and only on those platforms that I’ve tested them on so far.

Tests that deserve special mention are:

  1/a %process-info-pid: basic functionality
  2/b %wait-process-result: asynchronous (repeated)

The former would fail on LispWorks7 prior to the commit

  ba8c24e Bug fix: Exit code with LispWorks 7
  https://gitlab.common-lisp.net/epipping/asdf/commit/ba8c24ec9eedca905fdf5e4068737abc0da0ebe5

mentioned above (and thus e.g. with ASDF 3.1.7.7). The former would fail on Allegro CL prior to the commit

  a35fbe2 Bug fix: Store exit code with Allegro CL
  https://gitlab.common-lisp.net/epipping/asdf/commit/a35fbe20f6f342aa21dda55b149a39b4c25a4ee3

mentioned above (and thus also with ASDF 3.1.7.7).

A commit that I’m personally not yet happy with is

  ec74b27 Add %if-on-lispworks?+
  https://gitlab.common-lisp.net/epipping/asdf/commit/ec74b27edc9e53fb25723a0613c1db78b63178ad

The functionality should probably be moved to common-lisp.lisp or utility.lisp. Maybe the name should change. And if we decide not to support mkcl 1.1.9 and earlier(**), the #+mkcl clause can also go.

It might also be odd to make close-streams a public function already when it only makes sense to run on a process spawned via `(%run-program :wait nil)` which is not yet public; if so, I could split up

  fb3dd9a Add and use close-streams
  https://gitlab.common-lisp.net/epipping/asdf/commit/fb3dd9a

into two commits: one that adds and uses a private %close-stream and another (to be pushed at a later point in time) that makes it public.


Elias

(*) Main issues:
- Segfault with ECL that I don’t understand
- determine if terminate-process is ever safe to call on unix (I think so, please see my previous e-mails)
- decide (and then document) if it’s okay to call terminate-process repeatedly.
- decide how asynchronous process spawning (through %run-program :wait nil) should be exposed (similar to how %run-program :wait t is currently exposed through run-program)
(**) Tests have not worked on 1.1.9 for quite a while now. Unfortunately, 1.1.10 is still not out, though.


More information about the asdf-devel mailing list