chiark / gitweb /
sod
7 years agosrc/method-proto.lisp: Fix boneheaded `:keyword' as a type.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
src/method-proto.lisp: Fix boneheaded `:keyword' as a type.

7 years agosrc/class-make-impl.lisp: Don't store `nil' in the `metaclass' slot.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
src/class-make-impl.lisp: Don't store `nil' in the `metaclass' slot.

Normally we can fill `metaclass' in at construction time, but this is
difficult while we're bootstrapping the class graph.  Previously, we'd
store `nil' in the slot, and expect `bootstrap-classes' to fix things up
later; but actually, the `metaclass' slot is declared to hold only
`sod-class' objects.

Rather than expand the slot type, delay the `guess-metaclass' machinery
until class finalization (moving the code across into the relevant
source files).

7 years agosrc/pset-proto.lisp (default-slot-from-property): Maybe leave slot unbound.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
src/pset-proto.lisp (default-slot-from-property): Maybe leave slot unbound.

If there are no DEFAULT-VALUE forms, and the property isn't set, then
leave the slot unbound.

7 years agosrc/*.lisp: Fix declared slot types.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
src/*.lisp: Fix declared slot types.

SBCL doesn't seem too bothered about type mismatches in slot values, but
CMUCL kicks up a fuss.  These declared types were too strict, either
because of inadequate thinking or because the declarations had become
stale.

7 years agosrc/parser/package.lisp: Do better at finding Gray streams on CMUCL.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
src/parser/package.lisp: Do better at finding Gray streams on CMUCL.

Take the opportunity to reorganize the conditional machinery.  Avoid the
trap waiting because CMUCL's Gray streams are in its `extensions'
package, along with things whose names which conflict with our
utilities.

7 years agosrc/*.asd.in: Load `auto.lisp' explicitly relative to `*load-pathname*'.
Mark Wooding [Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)]
src/*.asd.in: Load `auto.lisp' explicitly relative to `*load-pathname*'.

7 years agodoc/structures.tex: Better typesetting of structure expressions.
Mark Wooding [Tue, 15 Dec 2015 19:15:23 +0000 (19:15 +0000)]
doc/structures.tex: Better typesetting of structure expressions.

7 years agodoc/structures.tex: Fix fake property lists for the builtin classes.
Mark Wooding [Tue, 15 Dec 2015 19:15:23 +0000 (19:15 +0000)]
doc/structures.tex: Fix fake property lists for the builtin classes.

SodObject was missing its `nick' property, which is unfortunate because
that's probably the most important one to be aware of.  SodClass was
missing a property list altogether.

7 years agodoc/structures.tex: Insert missing member name in structure display.
Mark Wooding [Tue, 15 Dec 2015 19:15:23 +0000 (19:15 +0000)]
doc/structures.tex: Insert missing member name in structure display.

7 years agodoc/runtime.tex: Highlight formal argument names.
Mark Wooding [Tue, 15 Dec 2015 19:15:23 +0000 (19:15 +0000)]
doc/runtime.tex: Highlight formal argument names.

7 years agodoc/clang.tex: Display the `fun' type specifier.
Mark Wooding [Sun, 10 Jan 2016 13:51:04 +0000 (13:51 +0000)]
doc/clang.tex: Display the `fun' type specifier.

It's too long to read comfortably in running text.

7 years agodoc/misc.tex (options): Add in missing argument form.
Mark Wooding [Sat, 7 May 2016 12:21:42 +0000 (13:21 +0100)]
doc/misc.tex (options): Add in missing argument form.

7 years agodoc/clang.tex: Fix function name.
Mark Wooding [Sun, 10 Jan 2016 13:51:04 +0000 (13:51 +0000)]
doc/clang.tex: Fix function name.

7 years agodoc/clang.tex: No, `*sod-tmp-ap*' is not exported.
Mark Wooding [Sun, 10 Jan 2016 13:51:04 +0000 (13:51 +0000)]
doc/clang.tex: No, `*sod-tmp-ap*' is not exported.

7 years agodoc/: Just some whitespace fiddling.
Mark Wooding [Tue, 15 Dec 2015 19:15:23 +0000 (19:15 +0000)]
doc/: Just some whitespace fiddling.

7 years agodoc/output.tex: Actually document the output symbols.
Mark Wooding [Sun, 10 Jan 2016 13:51:04 +0000 (13:51 +0000)]
doc/output.tex: Actually document the output symbols.

7 years agosrc/: Minor formatting tweaks.
Mark Wooding [Tue, 15 Dec 2015 18:30:18 +0000 (18:30 +0000)]
src/: Minor formatting tweaks.

7 years agoSTYLE: Some minor wording fixes.
Mark Wooding [Tue, 15 Dec 2015 19:15:23 +0000 (19:15 +0000)]
STYLE: Some minor wording fixes.

  * Some actual typos.

  * Punt on the issue of `a ~flet~' versus `an ~flet~' and how I'm
    pronouncing `flet' today.

7 years agosrc/c-types-test.lisp, src/test-base.lisp: Force pretty-printing.
Mark Wooding [Wed, 25 May 2016 16:15:48 +0000 (17:15 +0100)]
src/c-types-test.lisp, src/test-base.lisp: Force pretty-printing.

It seems that later `xlunit' versions turn this off.

7 years agosrc/optparse.lisp: Rearrange system-specific stuff.
Mark Wooding [Wed, 25 May 2016 15:30:16 +0000 (16:30 +0100)]
src/optparse.lisp: Rearrange system-specific stuff.

  * Remove `cl-launch' from the explicit `:use' list.

  * Prefer using `uiop' to collect arguments if it's present, because it
    does everything properly.

  * Fall back to `cl-launch' driven by steam if it's available.

  * Otherwise use a hacky list of system-specific runes copied from my
    other Lisp library.

  * Reformat the `exit' function so it's easier to slot new
    implementations in, similar to the new `set-command-line-arguments'.

  * Load `sod-frontend' and use `optparse:exit' rather than
    `cl-launch:quit', because the latter has disappeared in later
    versions.

7 years agosrc/Makefile.am: Add current directory to ASDF source registry.
Mark Wooding [Wed, 25 May 2016 15:27:42 +0000 (16:27 +0100)]
src/Makefile.am: Add current directory to ASDF source registry.

Newer ASDF doesn't look for system definitions in the current directory
by default any more.

7 years agosrc/Makefile.am: Append `$(EXEEXT)' to placate newer Automake.
Mark Wooding [Wed, 25 May 2016 15:26:49 +0000 (16:26 +0100)]
src/Makefile.am: Append `$(EXEEXT)' to placate newer Automake.

I don't think it will help much because I don't expect that `cl-launch'
works on Windows.

8 years agoRemove `SOD_CAR' from the public interface.
Mark Wooding [Tue, 29 Dec 2015 23:00:33 +0000 (23:00 +0000)]
Remove `SOD_CAR' from the public interface.

It's now called `SOD__CAR', no longer documented, and in a new, clearly
marked `preliminaries utilities' section of the header file.  This new
section precedes the header-file inclusions because they can in
principle depend on the definitions made here.

This macro probably won't change, but I reserve the right to make the
internal utilities be weird in ways which won't break the way Sod uses
them, but might break other things which rely on them.

8 years agodoc/clang.tex: Order the table of `simple' C types more sensibly.
Mark Wooding [Sun, 10 Jan 2016 13:51:04 +0000 (13:51 +0000)]
doc/clang.tex: Order the table of `simple' C types more sensibly.

8 years agodoc/: Bring the `SYMBOLS' file and description stubs up to date.
Mark Wooding [Sun, 10 Jan 2016 03:01:16 +0000 (03:01 +0000)]
doc/: Bring the `SYMBOLS' file and description stubs up to date.

8 years agosrc/class-output.lisp (*instance-class*): Add a docstring.
Mark Wooding [Sun, 10 Jan 2016 03:00:53 +0000 (03:00 +0000)]
src/class-output.lisp (*instance-class*): Add a docstring.

8 years agodoc/list-exports.lisp: Add in the obvious interactive rune.
Mark Wooding [Sun, 10 Jan 2016 02:15:24 +0000 (02:15 +0000)]
doc/list-exports.lisp: Add in the obvious interactive rune.

Just saves typing.  You know?

8 years agodoc/list-exports.lisp: Add in some packaging boilerplate.
Mark Wooding [Sun, 10 Jan 2016 02:11:02 +0000 (02:11 +0000)]
doc/list-exports.lisp: Add in some packaging boilerplate.

8 years agodoc/list-exports.lisp: Bind `*package*' while reading files.
Mark Wooding [Sun, 10 Jan 2016 02:10:39 +0000 (02:10 +0000)]
doc/list-exports.lisp: Bind `*package*' while reading files.

Otherwise we can get confused by read-time evaluation and other such
wonders.  Unfortunately this means that some of the macros we have
magical support for now need package qualification here.  Oh, well.

8 years agosrc/parser/scanner-charbuf-impl.lisp: Replace pointless use of `#.'.
Mark Wooding [Sun, 10 Jan 2016 02:06:42 +0000 (02:06 +0000)]
src/parser/scanner-charbuf-impl.lisp: Replace pointless use of `#.'.

This only existed because `charbuf-size' is (in theory) a tweakable
constant, but `defclass' wants a literal type specifier as its `:type'
argument.  But the correct type specifier, `charbuf-index' was already
defined at the same time (both were added in the same, rather sketchy,
old commit).

It's useful to kill this because it confuses the (rather stupid) reader
in `list-exports'.

8 years agodoc/lispintro.tex: Clarify and expound the API compatibility rules.
Mark Wooding [Wed, 6 Jan 2016 17:52:40 +0000 (17:52 +0000)]
doc/lispintro.tex: Clarify and expound the API compatibility rules.

A lot of this is (ahem) `borrowed' from the MOP spec.

8 years agolib/: Attach proper LGPL notices to files.
Mark Wooding [Tue, 15 Dec 2015 14:44:44 +0000 (14:44 +0000)]
lib/: Attach proper LGPL notices to files.

Include a `.skelrc' file so that future files added here get the proper
notice.

8 years agodoc/concepts.tex: Document changed `and' and `or' combination return values.
Mark Wooding [Tue, 15 Dec 2015 14:34:33 +0000 (14:34 +0000)]
doc/concepts.tex: Document changed `and' and `or' combination return values.

8 years agodoc/concepts.tex: Highlight method role names.
Mark Wooding [Tue, 15 Dec 2015 14:31:01 +0000 (14:31 +0000)]
doc/concepts.tex: Highlight method role names.

8 years agolib/sod.h: Mark-up fix.
Mark Wooding [Tue, 15 Dec 2015 14:27:52 +0000 (14:27 +0000)]
lib/sod.h: Mark-up fix.

8 years agosrc/method-aggregate.lisp: `and' and `or' combinations return decisive value.
Mark Wooding [Wed, 21 Oct 2015 23:46:28 +0000 (00:46 +0100)]
src/method-aggregate.lisp: `and' and `or' combinations return decisive value.

Rather than canonifying to an integer result, effective methods with
`and' and `or' method combination now return the decisive value -- which
means that they can be used with any scalar return type (so the type
restriction has been removed).

Most significantly, the `or' combination is very useful with pointer
returns: it returns the result of the most specific direct method which
returns a non-null value.

8 years agosrc/c-types-parse.lisp: Actually emit the type complexity.
Mark Wooding [Wed, 21 Oct 2015 23:46:28 +0000 (00:46 +0100)]
src/c-types-parse.lisp: Actually emit the type complexity.

Bug introduced in 0e7cdea0...

8 years agosrc/method-aggregate.lisp: Let `custom' methods have weird return types.
Mark Wooding [Tue, 17 Nov 2015 17:24:21 +0000 (17:24 +0000)]
src/method-aggregate.lisp: Let `custom' methods have weird return types.

8 years agosrc/method-aggregate.lisp: New protocol for method return types.
Mark Wooding [Tue, 17 Nov 2015 17:23:18 +0000 (17:23 +0000)]
src/method-aggregate.lisp: New protocol for method return types.

Rather than assume that primary methods should always return the same
type as the message, introduce protocol for the method combination to
decide which return type it wants.

8 years agosrc/method-aggregate.lisp: Store keyword list as a plist on the message.
Mark Wooding [Tue, 17 Nov 2015 17:20:16 +0000 (17:20 +0000)]
src/method-aggregate.lisp: Store keyword list as a plist on the message.

We'll need some properties in other methods on the message.

8 years agosrc/method-aggregate.lisp: Make the method count be `size_t'.
Mark Wooding [Tue, 17 Nov 2015 20:30:28 +0000 (20:30 +0000)]
src/method-aggregate.lisp: Make the method count be `size_t'.

8 years agosrc/pset-*.lisp: Allow parsing and retrieval of C types as property values.
Mark Wooding [Tue, 17 Nov 2015 17:16:19 +0000 (17:16 +0000)]
src/pset-*.lisp: Allow parsing and retrieval of C types as property values.

Hack src/sod.asd.in because pset now depends on c-types.

8 years agosrc/pset-proto.lisp: Remove the write wrapper for `p-%type'.
Mark Wooding [Tue, 17 Nov 2015 17:35:46 +0000 (17:35 +0000)]
src/pset-proto.lisp: Remove the write wrapper for `p-%type'.

8 years agosrc/module-parse.lisp: New statement to set module-level properties.
Mark Wooding [Tue, 17 Nov 2015 17:15:23 +0000 (17:15 +0000)]
src/module-parse.lisp: New statement to set module-level properties.

8 years agosrc/lexer-*.lisp: Add option to `error' to ignore non-consuming failure.
Mark Wooding [Tue, 17 Nov 2015 20:27:44 +0000 (20:27 +0000)]
src/lexer-*.lisp: Add option to `error' to ignore non-consuming failure.

Maybe you're using `error' somewhere where a totally missing thing is
OK: the new :ignore-unconsumed option lets you tell it that this isn't a
problem.

8 years agosrc/{builtin,c-types-{impl,parse}}.lisp: Add some more builtin types.
Mark Wooding [Tue, 17 Nov 2015 17:14:26 +0000 (17:14 +0000)]
src/{builtin,c-types-{impl,parse}}.lisp: Add some more builtin types.

Add `wchar_t', `_Bool' and `bool', and the C99 complex and imaginary
types.

8 years agosrc/sod-test.asd.in: Fix the setting of the system version.
Mark Wooding [Tue, 17 Nov 2015 17:36:49 +0000 (17:36 +0000)]
src/sod-test.asd.in: Fix the setting of the system version.

8 years agodoc/concepts.tex: Provide a conceptual background.
Mark Wooding [Tue, 17 Nov 2015 17:11:08 +0000 (17:11 +0000)]
doc/concepts.tex: Provide a conceptual background.

This is a bit messy still, but I think it's a solid start.

8 years agodoc/clang.tex: Document `argument' accessors together.
Mark Wooding [Tue, 17 Nov 2015 17:10:32 +0000 (17:10 +0000)]
doc/clang.tex: Document `argument' accessors together.

I'm not happy about the description, but the general shape is right.

8 years agodoc/syntax.tex: Remove pointless repeats on <declarator-suffix>.
Mark Wooding [Tue, 17 Nov 2015 17:08:15 +0000 (17:08 +0000)]
doc/syntax.tex: Remove pointless repeats on <declarator-suffix>.

<primary-declarator>[k] is already a recursive definition, because of
the parentheses.  Besides, if <declarator-suffix> was going to be shown
as repeatable, it should have a `+' rather than a `*', otherwise the
rule is directly recursive.

8 years agodoc/syntax.tex: Settle on <dotted-name> rather than <qualified-identifier>.
Mark Wooding [Tue, 17 Nov 2015 17:05:06 +0000 (17:05 +0000)]
doc/syntax.tex: Settle on <dotted-name> rather than <qualified-identifier>.

The document used both rather randomly.  The former is shorter and
less pointlessly abstract.

8 years agodoc/syntax.tex: Allow `0' as an integer literal.
Mark Wooding [Tue, 17 Nov 2015 17:03:06 +0000 (17:03 +0000)]
doc/syntax.tex: Allow `0' as an integer literal.

It's too short to be octal, and that's ugly anyway, so include it as a
strange decimal literal.

8 years agodoc/syntax.tex: Improve the syntax notation.
Mark Wooding [Wed, 21 Oct 2015 23:46:28 +0000 (00:46 +0100)]
doc/syntax.tex: Improve the syntax notation.

Rather than having a bunch of special rules, define the notational
extensions in terms of the parametrized nonterminals we have anyway for
declarators, and set that on a more formal footing.

I'm not quite sure how powerful this formalism is.  I believe it's
strictly more powerful than context-free grammars, but I haven't decided
whether it's Turing-equivalent.  It doesn't matter much here either way,
because the actual grammar is indeed context-free even if the formalism
is more expressive than that.

8 years agodoc/structures.tex: Fix section label.
Mark Wooding [Wed, 21 Oct 2015 23:46:28 +0000 (00:46 +0100)]
doc/structures.tex: Fix section label.

8 years agodoc/structures.tex: Fix indentation error.
Mark Wooding [Wed, 21 Oct 2015 23:46:28 +0000 (00:46 +0100)]
doc/structures.tex: Fix indentation error.

8 years agoSTYLE: Minor tweakery.
Mark Wooding [Wed, 21 Oct 2015 23:46:28 +0000 (00:46 +0100)]
STYLE: Minor tweakery.

8 years ago.gitignore: Ignore more TeX debris.
Mark Wooding [Wed, 21 Oct 2015 23:46:28 +0000 (00:46 +0100)]
.gitignore: Ignore more TeX debris.

8 years agoFix spelling of `Sensible' in all of the header comments.
Mark Wooding [Wed, 21 Oct 2015 23:46:28 +0000 (00:46 +0100)]
Fix spelling of `Sensible' in all of the header comments.

How embarrassing.

8 years agodebian/*.install: Distribute manpages with appropriate packages.
Mark Wooding [Wed, 21 Oct 2015 23:46:28 +0000 (00:46 +0100)]
debian/*.install: Distribute manpages with appropriate packages.

8 years agolib/, src/: Add man pages for the translator.
Mark Wooding [Wed, 21 Oct 2015 23:46:28 +0000 (00:46 +0100)]
lib/, src/: Add man pages for the translator.

Rather sketchy for now.  This will improve later, no doubt.

8 years agosrc/builtin.lisp, src/codegen-proto.lisp: Improve slot initialization.
Mark Wooding [Wed, 21 Oct 2015 23:46:28 +0000 (00:46 +0100)]
src/builtin.lisp, src/codegen-proto.lisp: Improve slot initialization.

The fundamental difficulty is that actually we're not initializing an
instance's slots: we're assigning values to them.

Previously, we tried to distinguish scalar from aggregate initializers.
The former got converted into

sod__obj->nick.slot = EXPR;

while the latter ended up as

sod__obj->nick.slot = (TYPE) { COMPOUND-INIT };

There are two problems with this.  The first is easy: aggregate
literals, such are used in the latter case, are shiny and new in C99.
The second is more subtle: we distinguish aggregate from scalar
initializers from whether they're wrapped up in braces -- but in fact
they needn't be if they've been concealed in a macro, e.g.,
`PTHREAD_MUTEX_INITIALIZER', or `DSTR_INIT'.  Under the previous rules,
you'd have to write something like

pthread_mutex_t slot = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER;

as your slot definition in order to get the right effect, and that's
just annoying.  (It would be a disservice to users to insert the cast
unconditionally, of course, since that would eliminate useful type
checking.)

Change all of this.  Instead, actually initialize an object of the right
type (we know that type that is, of course), and then assign it to the
slot.  A decent compiler will turn this into exactly the same object
code (yes, I tested this), and it means that our heuristic is no longer
needed for anything important.  I've preserved the distinction anyway,
because we can format compound initializers slightly more prettily, but
it no longer makes any semantic difference, and the dependency on C99
has been eliminated.

8 years agosrc/frontend.lisp: Report an error if no output types are requested.
Mark Wooding [Wed, 21 Oct 2015 23:46:28 +0000 (00:46 +0100)]
src/frontend.lisp: Report an error if no output types are requested.

Silently not doing anything is sort of unhelpful.

8 years agosrc/c-types-proto.lisp: Make `argument' objects be immutable.
Mark Wooding [Wed, 21 Oct 2015 23:46:28 +0000 (00:46 +0100)]
src/c-types-proto.lisp: Make `argument' objects be immutable.

We have no need to change them.

8 years agosrc/: Wrap functionish bodies in an appropriately named `block'.
Mark Wooding [Wed, 21 Oct 2015 23:46:28 +0000 (00:46 +0100)]
src/: Wrap functionish bodies in an appropriately named `block'.

8 years agodoc/output.tex: Start documenting the output machinery.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
doc/output.tex: Start documenting the output machinery.

8 years agodoc/sod.tex: Spruce up the index handling.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
doc/sod.tex: Spruce up the index handling.

  * Use `idxlayout' to format the index entries better.

  * Use the `makeidx' package's `\printindex' to read the index file.

8 years agoSTYLE: Zap trailing whitespace.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
STYLE: Zap trailing whitespace.

8 years agosrc/module-output.lisp, test/chimaera.sod: Add output items for user code.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
src/module-output.lisp, test/chimaera.sod: Add output items for user code.

It seems likely that many modules will want to add plain C code to the
implementation output, and declarations to the header, so provide
standard output items `early_user' and `user' for this purpose.

8 years agosrc/sod-{frontend,test}.asd.in: Define systems in separate packages.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
src/sod-{frontend,test}.asd.in: Define systems in separate packages.

Now that the system-definition packages have started exporting
variables, we'll get annoying warnings if the different `defpackage'
forms have inconsistent exports.

8 years agosrc/output-{proto,impl}.lisp: `sequencer''s :constraints initarg takes names.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
src/output-{proto,impl}.lisp: `sequencer''s :constraints initarg takes names.

The `constraints' slot of a `sequencer' object maintains a list of
constraints, each of which is a list of `sequencer-item' objects, and
this list is ordered with the most-recently added constraint first.

Previously the :constraints initarg just set this list directly, which
isn't really very satisfactory.  Instead, handle the initarg specially,
reversing it, and converting item names into the actual items, interning
them properly.

This isn't completely right, because there's no way at this time to
attach handler functions to the implicitly created items, but it's way
better than nothing.

8 years agosrc/class-output.lisp: Reformat and reorder.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
src/class-output.lisp: Reformat and reorder.

The major improvement is to gather together the methods which walk the
layout hierarchy, independently of the output reason.

8 years agosrc/utilities.lisp (merge-lists): Make default tie-break sane, and document.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
src/utilities.lisp (merge-lists): Make default tie-break sane, and document.

  * Make sure the candidate list given to the tie-breaking `pick'
    function is sorted according to the /first/ list each candidate
    appears in, rather than the last one, because `remove-duplicates' by
    default keeps the last-appearing element of each equivalence class,
    unless I give `:from-end t'.  So do that.

  * Describe the tie-breaking behaviour now that it's sane.  This is
    sort of important because it's used by the output machinery.

8 years agosrc/utilities.lisp: Use `do' in place of unnecessary `do*'.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
src/utilities.lisp: Use `do' in place of unnecessary `do*'.

The other loop variables seem to have gotten lost somewhere along the
way.

8 years agosrc/utilities.lisp: Fix another docstring's formatting.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
src/utilities.lisp: Fix another docstring's formatting.

8 years agodoc/: Initial work on an index.
Mark Wooding [Thu, 1 Oct 2015 10:49:58 +0000 (11:49 +0100)]
doc/: Initial work on an index.

8 years agoSTYLE: Document Lisp programming style.
Mark Wooding [Thu, 1 Oct 2015 10:49:41 +0000 (11:49 +0100)]
STYLE: Document Lisp programming style.

8 years agosrc/Makefile.am: Reinstate ASDF output translations.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
src/Makefile.am: Reinstate ASDF output translations.

These were mistakenly removed during the version number
hacking (58a9509...).  It's important to separate the good command-line
build from builds done inside a resident Lisp for hacking, because the
latter might be full of debug pessimizations.

8 years agodoc/SYMBOLS, doc/list-exports.lisp: Nail down output order properly.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
doc/SYMBOLS, doc/list-exports.lisp: Nail down output order properly.

8 years agodoc/: More Lisp synopses.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
doc/: More Lisp synopses.

These might be done now, in fact.

8 years agodoc/sod.sty: More describe categories.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
doc/sod.sty: More describe categories.

8 years agosrc/class-output.lisp: Use `vtable-name' rather than doing it by hand.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
src/class-output.lisp: Use `vtable-name' rather than doing it by hand.

8 years agosrc/sod-{frontend,test}.asd.in: Export `*version*'.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
src/sod-{frontend,test}.asd.in: Export `*version*'.

Have the other sysdef files also export this symbol because otherwise
SBCL emits annoying warnings.

8 years agosrc/module-impl.lisp: Don't require `finalize-module' to return the module.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
src/module-impl.lisp: Don't require `finalize-module' to return the module.

Returning the correct module object is now the responsibility of
`build-module'.

8 years agosrc/module-impl.lisp: Eliminate `define-fragment'.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
src/module-impl.lisp: Eliminate `define-fragment'.

It had a severely deficient interface: it could only define fragments
with constant contents.  Moreover, although it made an effort to accept
a string-literal as its text, it ended up in a tangle because
`code-fragment-item' insists on its `fragment' slot actually containing
a code fragment, and nothing does the conversion.

Rather than fix these bugs, I noticed that nothing actually used it at
all, so removing it completely seemed like a better option.

8 years agosrc/: Yet more naming and export twiddles.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
src/: Yet more naming and export twiddles.

  * Export `class-item', which names a pluggable parser invoked in
    parsing class definitions.

  * Export the accessors for `code-fragment-item' objects.

  * Rename the `message-*' generic methods to be `sod-message-*', for
    consistency with the existing accessors.  Specific targets are
    `message-combination', on aggregating messages, and
    `message-effective-method-class', part of the layout protocol, which
    is just inconsistent with `sod-message-method-class' in the
    metaobject construction protocol.

  * Also export `sod-message-kernel-function', which is used in
    aggregating messages.

  * Astonishingly, I'd not exported any of the `vtmsgs' symbols.

8 years agodoc/Makefile.am: `output.tex' exists, so depend on it.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
doc/Makefile.am: `output.tex' exists, so depend on it.

Also spell its name properly, which explains why it didn't work before
and was mistakenly commented out.

8 years agodoc/SYMBOLS: More changes.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/SYMBOLS: More changes.

8 years agodoc/: More synopses.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
doc/: More synopses.

8 years agodoc/misc.tex: Kill stray \relax.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/misc.tex: Kill stray \relax.

8 years agodoc/parsing.tex: Document `parsing' macro.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/parsing.tex: Document `parsing' macro.

8 years agodoc/: Document where declarations are permitted in macros.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/: Document where declarations are permitted in macros.

8 years agodoc/sod.sty: Fix describe category position when indented.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
doc/sod.sty: Fix describe category position when indented.

8 years agosrc/classes.lisp, src/class-finalize-impl.lisp: Don't export slot writers.
Mark Wooding [Tue, 22 Sep 2015 10:27:11 +0000 (11:27 +0100)]
src/classes.lisp, src/class-finalize-impl.lisp: Don't export slot writers.

Make accessors to finalization-time slots be plain readers, and use
`slot-value' explicitly to set them at the right time.

8 years agosrc/: Improve handling of declarations in macros.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/: Improve handling of declarations in macros.

Teach `parse-body' to be able to parse only declarations or only
documentation.  Use this in macros with convoluted internal binding
structure.

8 years agosrc/: More exports, found while documenting things.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/: More exports, found while documenting things.

8 years agodebian/rules: Don't strip the main executable.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
debian/rules: Don't strip the main executable.

It doesn't work.  All the good stuff in the dumped image gets stripped
out and you're left with a bare SBCL which probably doesn't even work.

8 years agoAdd build machinery for the manual.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
Add build machinery for the manual.

8 years agoMerge branch 'master' into doc
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
Merge branch 'master' into doc

* master:
  src/parser/parser-expr-impl.lisp: Compare paren tags with `eql'.
  src/module-impl.lisp: Expose `c-fragment' state.
  src/lexer-proto.lisp: Export some more symbols.
  src/pset-proto.lisp (default-slot-from-property): Make `slot-names' optional.
  src/pset-proto.lisp: Fix export of `check-unused-properties'.
  src/: Fix some docstrings.

8 years agosrc/parser/parser-expr-impl.lisp: Compare paren tags with `eql'.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/parser/parser-expr-impl.lisp: Compare paren tags with `eql'.

They're often characters, which can't reliably be compared with `eq'.
Not sure what I was thinking, really.

8 years agosrc/module-impl.lisp: Expose `c-fragment' state.
Mark Wooding [Sun, 30 Aug 2015 09:58:38 +0000 (10:58 +0100)]
src/module-impl.lisp: Expose `c-fragment' state.

  * Export `c-fragment-text', and use `file-location' to read the
    location.

  * But make these be read-only.