Would love some feedback on wip feature

Faré fahree at gmail.com
Wed Oct 5 23:34:27 UTC 2016


On Wed, Oct 5, 2016 at 3:26 AM, Chris Bagley <chris.bagley at gmail.com> wrote:
> I started this feature after finding it a pain to use osicat as
> neither Windows or OSX ship with a C compiler installed. When the
> groveler failed the output was very unhelpful, and as I wasn't a
> developer on the groveler I had no idea what it was or how I should be
> interacting with it. I was just a consumer who saw value in osicat.
>
I like to distinguish 4 roles:
1- Author, who writes a given system.
2- Referrer, who uses the system from another system.
3- Integrator, who assembles a bunch of systems into an application.
4- (End) User, who uses the application and shouldn't even have to
know it's in Lisp.

Only the Integrator should have to worry about matching together Lisp
systems, Lisp implementations, C compilers, etc. For others, it should
"just work". By default.

What problem are you trying to solve for people in which role? How is
it not already solved by the ASDF cache?

If it's anyone but Integrators, then mucking with implementation
identifiers is wrong-headed. If you're trying to write something for
Integrators, then look at the ASDF bundle operations as a good start.

And if you're not satisfied with ASDF, may I suggest you give a look
at bazelisp? Sure, it only works on Linux amd64 using SBCL at this
point, but it might be easier to port for much better results than
would be trying to abuse ASDF and try to go against the design of
ASDF.

> Where can I find details on these 'internal invariants'? This sounds
> like a problem with the currently implementation and not the concept
> of avoiding duplication of work (caching).
>
The invariants of ASDF are mainly that you should be using the ASDF
cache and it should just work. If you're not using it the intended
way, either:
1) There's a bug in ASDF, so go fix ASDF, or
2) There's a bug in your code, so go fix your code.

> I really would like to understand this as I attempt to ship games in
> lisp and dealing with C dependencies from projects using CFFI is by
> far the single biggest issue of shipping.
>
That's an application delivery issue, for Integrators.
For that, please use ASDF (monolithic) bundle operations,
GDL famously does just that.

See also the cffi-toolchain static-link capabilities, that could use
some love. (SBCL notably reverted my patch to generate self-contained
static linked binaries, because it was broken on MacOS and Windows.)

Or use Bazel (which patches SBCL).

But please don't introduce towers of complexity that defeat the design of ASDF.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
If you're a quiet, law-abiding citizen most of the time but occasionally cut
someone up and bury them in your backyard, you're a bad guy.
       — Paul Graham, "The Power of the Marginal"



More information about the cffi-devel mailing list