Some trivia

19 views
Skip to first unread message

Waldek Hebisch

unread,
Feb 25, 2023, 11:34:54 AM2/25/23
to fricas...@googlegroups.com
Comparing with NAG sources our algebra has 71 new files containing
79742 lines. One contains code mover from other files, 2 were
addes in Axiom era. That means 75467 lines in files added for
FriCAS. Git blame says that 74935 lines in algebra came from
original commit initializing FriCAS repository and 140737
lines came later. Many changes lines are due to mass edits,
like renamings and white space changes. Still, such changes
improve code. Some lines were subject to multiple trivial
changes and composite change is less trivial.

Comparatively, in 'src/interp' subdirectory git blame says
that 44203 lines in *boot and *.lisp came from inital commit.
Total is 62577, so comparatively, there is smaller change.
OTOH inital NAG release had 128578 lines in *boot and *.lisp
files, so more than half of original code is gone.

Some people still say "all Axiom forks have essentially the
same functionality". Data above shows that there were huge
changes to algebra, adding many new things and improving
old one. And while smaller, changes to other parts were
quite significant.

--
Waldek Hebisch

Tim Daly

unread,
Feb 25, 2023, 3:16:40 PM2/25/23
to FriCAS - computer algebra system
I, for one, would never claim that "all Axiom forks have
essentially the same functionality". I agree that you've
added significant algebra and other improvements.
I have "backported" some of those changes (like the
Guess package, for example). I hope you continue to add more.

Comparisons to the original NAG sources is questionable.
I worked on the source tree for over a year after getting
the NAG sources before Axiom was released. The NAG
sources cannot boot without a running Axiom image.

Among the many changes, I rewrote the system to make it
self-host. I moved the NAG system from CCL back to GCL.

Prior to the forks I imported changes from both the Fricas
and OpenAxiom branches into the main Axiom trunk. There
was a bit of controversy about "cherry picking" as I recall
but neither branch had ever submitted patch requests so
it is unclear how else it could be done. As these were hand
edits rather than patch files there will be significant source
character differences but not functionality.

A reasonable comparison might be to compare against the
Axiom trunk at the date of the fork, ignoring whitespace, etc.

In any case, please keep improving the system.

Tim

Waldek Hebisch

unread,
Feb 25, 2023, 9:08:22 PM2/25/23
to fricas...@googlegroups.com
On Sat, Feb 25, 2023 at 11:39:00AM -0800, Tim Daly wrote:
> I, for one, would never claim that "all Axiom forks have
> essentially the same functionality".

That was about other folks.

> I agree that you've
> added significant algebra and other improvements.
> I have "backported" some of those changes (like the
> Guess package, for example). I hope you continue to add more.
>
> Comparisons to the original NAG sources is questionable.
> I worked on the source tree for over a year after getting
> the NAG sources before Axiom was released. The NAG
> sources cannot boot without a running Axiom image.
>
> Among the many changes, I rewrote the system to make it
> self-host. I moved the NAG system from CCL back to GCL.
>
> Prior to the forks I imported changes from both the Fricas
> and OpenAxiom branches into the main Axiom trunk. There
> was a bit of controversy about "cherry picking" as I recall
> but neither branch had ever submitted patch requests so
> it is unclear how else it could be done. As these were hand
> edits rather than patch files there will be significant source
> character differences but not functionality.
>
> A reasonable comparison might be to compare against the
> Axiom trunk at the date of the fork, ignoring whitespace, etc.

I did not wrote about build system or developement methodology
for a reason. Namely, many user say: "I do not care how
developers build the system, if final result has the
same functionality". So speaking about build system is
beginning of confusion. For me changes to build system and
developement methodology were enablers, they allowed other
developements in FriCAS. But alone they would not be
a big deal. Of course, it is important that program can
be build at all, but once it builds many users do not care
about build process. What matters is consequences, that is
developement of algebra (which contains user-visible functionality).

Concerning NAG sources: they are convenient point of comparison,
because directory structure and file content in FriCAS is closer
to NAG version than to Axiom from 2007. More precisely, Axiom
tacked '.pamphlet' extention to filenames and added literate
boilerplate to the files. FriCAS is back to '.boot' and '.spad'
extentions and literate boilerplate is removed. I explicitely
noted 2 algebera files that were added to Axiom in period up to 2007,
and do not count them as additions to FriCAS. So 75467 lines are
in files added after fork. 'git blame' results are relative to
initail commit in FriCAS which took files from wh-sandbox. So the
74935 algebra lines is upper estimate of common lines with Axiom
algebra from 2007 and remaining 140737 lines were added or changed
after fork. And as you can see more than half of change is code in
new files.

--
Waldek Hebisch

Tim Daly

unread,
Feb 26, 2023, 2:59:16 AM2/26/23
to fricas...@googlegroups.com, Tim Daly
Including whitespace changes?

By that comparison virtually every file in Axiom has changed since
they are now in literate form.

But there are many semantic differences.

There are hundreds of new files that did not exist at the time
of the fork, such as the computer algebra test suite which
contain dozens of files and many thousands of lines. They
compare Axiom's results to published results (e.g. Rich, Kamke,
Schaum, etc.}

There is new algebra, some of which was backported.

Additional information has been added to the Spad algebra
files to facilitate the new effort at proving the algebra correct
so all of the algebra files were changed.

The ++ lines in Spad files now contain executable examples
of each function so the user can see working examples by
showing the available functions.

Boot code is gone. Every .boot file has been rewritten
into Common Lisp, eliminating the need for boot translation and
the boot translator. Almost nobody "speaks" boot.

Error messages have been re-inserted inline to the code rather
than using message numbers. This makes it easier to find the
source of a printed error message. This changed most files.

The compress.daase file was eliminated. Both compress and
the error message files were created during my effort to get
Axiom to run on tiny IBM PC-like computers. We are no longer
constrained to fit in 640k of memory and tiny floppy disks so
these files were just a waste of time these days.

Spad files have had their contents "regularized" so they follow a
common pattern. Comparing algebra against Axiom will show
non-semantic changes. URLs to the related papers were added
to make it easier to understand the algebra.

There are thousands of pages of documentation.

There is new functionality to connect live Axiom I/O to
web pages. Some "live" web pages have been written.

There is a whole new file of graphics testing.

Attempts at Youtube tutorial videos were made. Now that I
understand obs-studio and kdenlive I may make more.

The src/input files are literate and contain self-checking code,
executed at build time.

There are hundreds of files containing BLAS and LAPACK
I ported to Common Lisp.

By comparison, it is likely that every character of Axiom changed.

There is a new book "in progress" based on the Axiom emails
telling the story of the NAG transfer, the reasoning behind the
project goals, the struggle of the forks, etc. (Not on github).

There is a whole new Common Lisp CLOS architecture that
rewrites the Axiom algebra. It includes a parallel architecture to
contain the Lean definitions and theorems that will be inherited
into each category/domain/package to support proving code
correct. (Not on github).

A specification language for functions is in process (Not on github).
This provides a basis for pre- and post- conditions on functions
used during proofs.

I'm not sure what you're trying to measure here. No-one doubts
that you and the community have done useful work and made
useful changes, including me. But git blame is not a valid
measure of anything interesting.

A more semantically interesting measure would compare the
list of functions from each domain to see what has been added.

Tim


--
You received this message because you are subscribed to a topic in the Google Groups "FriCAS - computer algebra system" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/fricas-devel/NZh2yFjAOMM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to fricas-devel...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/fricas-devel/20230226025129.77acopffpvzmj7qu%40fricas.math.uni.wroc.pl.
Reply all
Reply to author
Forward
0 new messages