Re: Updating defsystem dependencies
Raymond Toy <[email protected]>
| Newsgroups | gmane.comp.mathematics.maxima.general |
|---|---|
| Message-ID | <[email protected]> |
On 4/15/26 7:20 AM, Barton Willis wrote:
> Might straightening out these dependences eliminate some compiler
> warnings such as:
Good news and bad news. I think I’ve fixed all the dependencies in
maxima.system so that if a file in some module changes, then all the
modules that depend on that module will get recompiled. That’s a good
step to make compiling incremental changes work better. I’ll land these
changes to master soon.
However, Claude says adding dependencies to fix the compiler macro
warnings causes cycles in the dependencies. It suggested 3 options:
1.
Get rid of the compiler macros
2.
Move the compiler macros into a separate file
3.
Something about loading defmfun-check.lisp defining the macros (I
didn’t understand what it was saying).
Option 2 is not really possible since defmfun defines the compiler
macro. Option 1 is possible, but I think the compiler macros make a
measurable difference in runtime in the testsuite.
One final option is adding NOTINLINE as sbcl suggested, It’s not clear
to me if that means the compiler-macro is then not used. If so, I think
we don’t want to do that.
Fixing this is a longer-term project.
>
> ; compilation finished in 0:00:00.620
> STYLE-WARNING:
> 2 calls to MAXIMA::$LIMIT were compiled before a compiler-macro was
> defined
> for it. A declaration of NOTINLINE at the call sites will eliminate
> this
> warning, as will defining the compiler-macro before its first
> potential use.
> ;
> ; compilation unit finished
> ; printed 1 note
>
> The dozens and dozens of warnings distract from messages that are
> important.
>
> --Barton
> ------------------------------------------------------------------------
> *From:* Raymond Toy <[email protected]>
> *Sent:* Saturday, April 11, 2026 12:22 AM
> *To:* <[email protected]>
> <[email protected]>
> *Subject:* [Maxima-discuss] Updating defsystem dependencies
>
>
> Caution: Non-NU Email
>
>
> Well, I asked Claude to check the dependencies of all the lisp files.
> Here is what it said. I'll look into soon and fix this up if needed.
> I think moving some macros and functions around would be helpful too
> instead of just leaving this as they are.
>
> I'll update the asdf file too.
>
>
> Bugs fixed
>
>
> 1 — Duplicate |:depends-on| in |command-line|
>
> MK:DEFSYSTEM silently discards all but the last |:depends-on| clause
> per module. |command-line| had two, so its |defmfun| dependency was
> being dropped. Fixed by merging into one: |:depends-on ("defmfun"
> "getopt")|.
>
>
> 2 — |pois3| (key / bp / order / …) loaded far too late
>
> |pois3| was in |poisson-series| (nearly last) but its macros are
> called at compile time by *cl-info, init-cl, inmis, intl, mdebug,
> mutils, nparse, plot, rand-mt19937, bessel, expintegral, defint, hyp,
> hypgeo, and limit* — all compiled far earlier. Promoted to a new early
> |poisson-macros| module, placed immediately after |globals|.
>
>
> 3 — |pade| (num / denom / red) loaded far too late
>
> |pade| was in |miscellaneous| (very late) but its three macros are
> used across *simp, float, sin, limit, hayat, rat3b, rat3e, combin,
> displa, nrat4, nisimp, irinte, nforma, rpart, series, sinint, mactex,
> trigo, and risch*. Promoted to a new early |pade-macros| module.
>
>
> 4 — |spgcd| (len / matrix) loaded too late
>
> |spgcd| was in |gcd| (late) but |len| and |matrix| are used by *float,
> getopt, linnew, numth, plot, trigo, init-cl, and intl*. Promoted to a
> new early |spgcd-macros| module before |simplification|.
>
>
> 5 — |evaluator| (mlisp → |msetq|) must precede |commands| and
> |simplification|
>
> |msetq| is a compile-time macro needed by |comm|, |csimp2|, |inmis|,
> |matcom|, |matrun|, |nparse|, |optim|, |suprv1|, |trans2|, |trans4|,
> |transl|, and |trmode|. The |evaluator| module is now placed before
> |commands| and |simplification|, and those modules gain |:depends-on
> ("evaluator")|.
>
>
> 6 — |transm| (tr / maref / maset / def%tr) must precede
> |factoring| and |simplification|
>
> |transm| was in |maxima-language-compiler-macros| which was ordered
> after |factoring| and |simplification|. But |algfac|, |nalgfa|
> (factoring), |float| (simplification), |linnew|, |newdet|, and
> |trgred| all use its macros. The module is now placed at position 15 —
> before |factoring| and |simplification| — and those modules gain the
> dependency.
>
>
> 7 — |risch| (pair) must precede |utility-macros|, |utilities|,
> |trigonometry|, and |miscellaneous|
>
> |risch| was in |integration| but |pair| is called by |mforma|
> (utility-macros), |mutils| (utilities), |series| (miscellaneous), and
> |trgred| (trigonometry). |integration| is now placed before
> |trigonometry| and |miscellaneous|, both of which gain |:depends-on
> ("integration")|.
>
>
> 8 — |display| did not depend on |reader|
>
> |displa.lisp| uses |def-rbp| from |nparse| (reader module). Added
> |:depends-on ("reader")| to |display|.
>
>
> 9 — |miscellaneous| did not depend on |reader| or |integration|
>
> |gamma| and |nset| use |nparse| macros; |series| uses |risch→pair| and
> |schatc→alist-bind|. Added both |reader| and |integration| as
> dependencies.
>
>
> 10 — |schatc| (pattern-matching) macros needed by limits,
> trigonometry, integration
>
> |preserve|, |alist-bind|, and |schatchen-cond| are called by |limit|,
> |trgred|, and |sin| respectively. |limits|, |trigonometry|, and
> |integration| now depend on |pattern-matching|.
>
>
​
_______________________________________________
Maxima-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/maxima-discuss