1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399
|
This file contains notes on current development projects in Axiom
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom Literate Programming
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom continuous integration
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Currently we follow a model of publishing a "release"
1) set up a continuous integration server
- jenkins server setup
* add git plugin
* add shell plugin
* build bronze project
* The jenkins server now has private disk space.
* Built individual virtualbox images for many distros.
- rework makefiles for jenkins builds
- rework src/input for jenkins builds
2) move to a continuous integration model so that every change
gets built, tested, and pushed immediately.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom Database reorganization
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The databases were intially created on an ad-hoc, history-driven
basis (e.g. the compress database was created when I needed to
put Axiom on a 1Meg memory machine. It is now gone).
1) reorganize the database layer use better technology
2) merge the databases into a single database.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom Burge recursive parser
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The Burge zipper parser accepts input and "zips it up" into a
recursive data structure.
1) document this idea and the underlying data structures
* Got a copy of Recursive Programming Techniques by Burge
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom Charybdis
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
recordandprint receives an sexpression form of the output,
computes subexpression lengths, and prints. This is an
implementation of the Charybdis paper.
1) use the paper to document Charybdis in detail
* Read the Charybdis paper
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom mkAtree
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
mkAtree receives the InputForm as an sexpression and constructs
a tree object.
1) This tree object to be documented in detail
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom src/interp cleanup
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
src/interp still contains many lisp files.
1) these need to be rewritten from machine-generated lisp to
human-written lisp and documented.
* src/interp/regress.lisp merged and removed
* Started rewrite into standard common lisp syntax (from machine syntax)
* Removed |function| macro globally.
2) remove src/interp
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom interpreter merge
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
src/interp contains functions called by the interpreter.
1) tree-shake the interpreter to drag in the referenced
functions.
* Complete review of Volume 5, noting all of the missing references.
* Started adding missing references.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom compiler merge
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
src/interp contains functions called by the compiler.
2) tree-shake the compiler to drag in the referenced functions.
* add a Signatures chapter to the Axiom Compiler volume
* add signatures of all lisp functions
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom browser help
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
help files are generated for the algebra. )help calls an
external command called SPADEDIT. This currently either types
out the help file (straight text) or opens an editor of choice,
defaulting to vi.
1) SPADEDIT needs to have the choice of displaying the help files
in a browser window.
2) SPADEDIT needs to be able to handle pdfs
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom help files
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
All of the categories, domains, and packages needs a help file.
1) All of the exported functions need help files
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom display op examples
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
)d op somefunction will display examples which are taken from
++X lines in the export section of the constructor.
1) All of the exported functions need ++X example lines.
2) d op needs to display the ++ text for functions
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom makefile removal
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The makefiles are organized as a tree with shell variables passed
through the branches.
1) rewrite the makefiles into a single documented makefile
2) rewrite the single makefile into lisp
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom CATS expansion
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The computer algebra test suite (CATS) needs comprehensive
test suites for more coverage.
1) find a suitable textbook with a lot of examples of
input/output pairs (like Schaums). Write a CATS test suite.
* Adding Wester test suite as published at
http://math.unm.edu/~wester/cas_review.html
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom buglist
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The bug list has some very old bugs on it and lacks entries for
known bugs.
1) pick a bug and fix it
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom algebra availability documentation
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Currently the algebra is just a pile of constructors. There is
no good organization by topic
1) organize the algebra by topic using some external, known
organization. possibly use maxima/maple/MMA organization
so users can compare.
2) highlight the areas where Axiom is weak or missing some
functionality and suggest new algebra
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom algorithm documentation
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The algebra uses some known, published algorithms and also
uses unknown, unpublished algorithms.
1) find an area with published algorithms (e.g. symbolic
summation) and find the corresponding Axiom algorithm.
Document it and reference the published papers
2) find an area where Axiom has old algorithms (e.g.
symbolic summation), update the algorithms, document
them, and reference the published papers
3) update the algorithm bibliographic history page to
trace the history, current implementation, and future
direction of Axiom's algorithms.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom history
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The history of Axiom as free software is documented in the
mailing list archives.
1) Condense, organize, and write a book on the history of Axiom.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom proofs
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom uses algorithms which have been proven in the literature
(e.g. Euclid's algorithm) in theory. Axiom reduces these to
practice.
1) prove Axiom's implementation of Euclid's algorithm
a) Math-to-Spad proof (e.g. COQ)
b) Spad-to-Lisp proof (e.g. ACL2)
c) Lisp-to-C proof (e.g. LLVM work)
d) C-to-machine proof (Conditional-Concurrent Assignments)
2) merge ACL2 beneath the Axiom interpreter and make it
available at the command prompt.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom category axioms
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Add mathematical axioms to Axiom's category hierarchy.
1) decorate each category with their axioms (e.g. monoid)
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom numerics
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Since moving away from NAG, Axiom numerics are missing
1) expand bookvol10.5 with working lisp code and expose
the numeric routines in packages
2) investigate and recreate NAG-equivalent code for the
exposed NAG library routines
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom Browser Notebook
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom can currently serve as a backend for a browser.
1) expand the existing notebook code bookvol11 to make
the notebooks more functional
2) expand/port the existing hyperdoc documentation to
the new browser
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom SVG hierarchy
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Currently the SVG graph of Axiom's constructors is static.
1) modify the static structure so clicking on a node goes
directly to the constructor algebra
2) modify the static structure to use a better, more useful
graph structure so it can be easily navigated in the browser
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom graphics
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom currently uses its own graphics package written in C.
1) rewrite the graphics package to use HTML5 canvas
2) integrate the graphics with the new browser front end
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom expression server
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom can listen on a port.
1) modify Axiom to take a command-line input from a port,
compute the result, and return it over the net.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom algebra use documentation
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Currently the algebra use documentation just shows how to call
various functions but not solving actual problems.
1) find a problem to solve, solve it, and document it in detail
2) create "intro" videos for new users showing how to
use Axiom in different domains. Relate these to the
algebra use documentation.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom new developer support
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom has videos of talks and videos of how-to.
1) expand the how-to videos for developers detailing how
to understand, maintain, modify, and extend Axiom
* develop user course syllabus
* develop developer course syllabus
* develop algebra course syllabus
2) list and publish potential projects
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom src/input dispersal
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The src/input files were created as initial attempts at testing
and documentation. Thus there are two kinds of files in the
same directory.
1) reorganize the directory
a) move complete examples into the user's guide or the algebra
book
b) merge constructor example files with the constructor help
c) organize, cleanup, and expand test coverage files to support
continuous integration
2) remove src/input
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom youtube channel
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom has a new video library section
1) create a youtube channel for Axiom videos and upload
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom books
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* treeshake missing references
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom interpreter
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom development ideas
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* use the .idx files to construct a master index
* figure out how to hyperlink to a pdf page
* figure out how to do emacs point-search (tags file)
* merge databases into defstruct form in-memory storage
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom website
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom ports
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom misc. updates
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
DONE
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* )quit now defaults to immediate quit
* make a video showing low level debugging of lisp code
* added a Signatures chapter to the Axiom Interpreter volume
* added signatures of some lisp functions
* clean up the defvar syntax
* clean up failing test cases
* clean up zips directory. Delete CCL, Meta, tla
* Add chapters for frames, history, undo, exposure groups
* Move videos link up
* Fixed failing regression tests
* Updated buglist
* Create a docker image
|