Artifact e6bd0865588da25227280a4628d482a1a96cae51e7f737436e059972ebd6603f:
- Executable file
r37/lisp/csl/jlisp/slowr36.lsp
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 11008) [annotate] [blame] [check-ins using] [more...]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % csl -z -o slowr36.img build36.lsp -l build1.log % % where this job rebuilds a bootstrap REDUCE etc etc from scratch % % % Build a CSL REDUCE "in core" as first stage of a bootstrap. To be % run starting from a cold-start CSL, i.e. with the -z option. % % This file first builds REDUCE, it then makes a set of FASL modules % for auto-loadable parts of the system, compiles a load of Lisp into % C and processes the Lisp interface code generated in the process. % % Here I build modules for all the things that will be included in the % demonstration version of REDUCE, and all the parts of the code that % will be subject to compilation into C. % % Author: Anthony C. Hearn. % Modifications by Stanley L. Kameny and Arthur Norman (verbos 3) (rdf "compat.lsp") % (rdf "../cslsrc/fastgets.lsp") (rdf "extras.lsp") (rdf "compiler.lsp") (setq !*comp nil) % The curious arrangement of rds and oldchan!* is because the % source file ../src/boot.sl ends by doing an (rds oldchan!*), which % avoids it hitting the end of file, and probably fits PSL very well. % If that line were not there I could just go (rdf "../src/boot.sl") % and that would cope with the file closing as well. (rds (setq oldchan!* (rds nil))) (rds (setq xxx (open "../src/boot.sl" 'input))) (close xxx) (begin2) % "cslprolo.red" can contain things that are system dependent % but which HAVE to be loaded before "rlisp.red" is. rds(xxx := open("../src/cslprolo.red",'input)); (close xxx) (begin2) rds(xxx := open("../src/module.red",'input)); (close xxx) (begin2) rds(xxx := open("../src/rlisp.red",'input)); (close xxx) (begin2) % "cslrend.red" contains CSL specific definitions of a few functions % required by Reduce, and can flag things as 'lose where that will help % performance by allowing versions of functions built into the CSL kernel % to remain active. rds(xxx := open("../src/cslrend.red",'input)); (close xxx) (begin) % Now I have RLISP built I can dispense with all the fooling about with % rds and open, and just read files in using the regular (in "xxx.red") % syntax. I build all the parts of REDUCE that are expected to be % resident. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % HORRIBLE WARNING: % The system build in-store here will NOT have patches applied to it. % The fasl files written out WILL be subject to patching, but % if building the first few modules correctly depends on running % with a patched version then you are in trouble. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% on backtrace; % The bad news is that module "poly.red" uses some of these, but they % are defined in "alg.red". But if I try to load "alg.red" first I run % into trouble with the operators ".+" etc... symbolic smacro procedure iequal(u,v); eqn(u,v); newtok '((!#) hash); newtok '((!# !+) iplus2); newtok '((!# !-) idifference); newtok '((!# !*) itimes2); newtok '((!# !/) iquotient); newtok '((!# !>) igreaterp); newtok '((!# !<) ilessp); newtok '((!# !=) iequal); infix #+,#-,#*,#/,#>,#<,#=; precedence #+,+; precedence #-,-; precedence #*,*; precedence #/,/; precedence #>,>; precedence #<,<; precedence #=,=; deflist('((idifference iminus)),'unary); deflist('((iminus iminus)),'unary); deflist('((iminus iplus2)), 'alt); in "../src/poly.red"$ in "../src/alg.red"$ % Now a little test! algebraic; on echo,time; (1-x)^10; df((1-x^2)^10, x, 10); 2^5000; symbolic; preserve(); % Give up at this stage for now... quit; in "../src/arith.red"$ in "../src/mathpr.red"$ on savedef; % Now I start on the FASL files - I want saved defs in them all % since the saved definitions will be used when speed-critical % parts of the system are to be compiled into C. faslout 'cslprolo; in "../src/cslprolo.red"$ faslend; faslout 'module; in "../src/module.red"$ module 'cslpatch; % Support for patching REDUCE 3.6 sources..... % This adjusted version is needed if patching is to work properly with % CSL. The only changes are two replacements for calls to gensym(). symbolic procedure patchstat; % Read a patch for a given package. begin scalar !*mode,u,v,x,y,z,z2; x := scan(); % Package name. scan(); % Remove semicolon. a: !*mode := 'symbolic; y := xread nil; if eqcar(y,'symbolic) then y := cadr y else if flagpcar(y,'modefn) then progn(!*mode := car y, y := cadr y); if eq(y,'endpatch) then progn(u := dated!-name x, z2 := list('de,u,nil,'progn . reversip z) . z2, z2 := list('put,mkquote x,mkquote 'patchfn,mkquote u) . z2, return ('patch . reversip z2)) else if eqcar(y,'procedure) then progn(v := cadr y, u := hashtagged!-name(v, y), z := list('copyd,mkquote v,mkquote u) . z, z2 := convertmode(('procedure . u . cddr y),nil, 'symbolic,!*mode) . z2) else z := convertmode(y,nil,'symbolic,!*mode) . z; go to a; end; put('patch,'stat,'patchstat); endmodule; preserve(); %%%%%%%%%%%%%%%%%%%%%%%%%%%%% faslend; load!-module 'module; % Patched version MUST be loaded before patches.red faslout 'patches; in "../src/patches.red"$ faslend; % Note that even though I have now read in the patches, they do not get % applied unless a module is loaded using "load_package". Thus the % patches are not yet in effect. faslout 'rlisp; in "../src/rlisp.red"$ faslend; faslout 'cslrend; in "../src/cslrend.red"$ faslend; faslout 'alg; in "../src/alg.red"$ faslend; faslout 'poly; in "../src/poly.red"$ faslend; faslout 'mathpr; in "../src/mathpr.red"$ faslend; faslout 'arith; in "../src/arith.red"$ faslend; faslout 'entry; in "../src/entry.red"$ faslend; lisp restart!-csl nil; (setq !*savedef nil) (load!-module 'compat) (load!-module 'cslprolo) (load!-module 'module) (load!-module 'patches) (setq loaded!-packages!* '(compat cslprolo module patches)) (load!-package 'rlisp) (load!-package 'cslrend) (load!-package 'poly) (load!-package 'alg) (load!-package 'arith) (load!-package 'mathpr) (setq !*comp nil) (load!-package 'entry) (setq !*comp t) (begin) symbolic; << initreduce(); date!* := "Bootstrap version"; % I call mapstore() here to reset all counts to zero, % thereby making future statistics at least marginally meaningful! mapstore 4; !*savedef := nil; checkpoint('begin, "Bootstrap REDUCE 3.6...") >>; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % I build each module (from now on) with a cleanly-restarted version of % REDUCE so that if the module sets flags or changes syntax etc etc that % can not cause trouble for further system-building. This seems an ugly % state of affairs but is essential at present. An effect will be that % patches get applied when the modules are loaded, so from now on the % modules built should be safe. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% symbolic; on savedef; faslout 'fmprint; in "../cslsrc/fmprint.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'matrix; in "../src/matrix.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'hephys; in "../src/hephys.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'arnum; in "../src/arnum.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'cedit; in "../src/cedit.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'compact; in "../src/compact.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'excalc; in "../src/excalc.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'ezgcd; in "../src/ezgcd.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'factor; in "../src/factor.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'gentran; in "../src/gentran.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'dipoly; in "../src/dipoly.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'groebner; in "../src/groebner.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'groebnr2; in "../src/groebnr2.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'int; in "../src/int.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'algint; in "../src/algint.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'pretty; in "../src/pretty.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'rcref; in "../src/rcref.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'numeric; in "../src/numeric.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'roots; in "../src/roots.red"$ faslend; faslout 'roots2; in "../src/roots2.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'rprint; in "../src/rprint.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'scope; in "../src/scope.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'solve; in "../src/solve.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'spde; in "../src/spde.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'taylor; in "../src/taylor.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'tps; in "../src/tps.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'misc; in "../src/misc.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'odesolve; in "../src/odesolve.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'avector; in "../src/avector.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'rlisp88; in "../src/rlisp88.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'orthovec; in "../src/orthovec.red"$ faslend; lisp restart!-csl t; symbolic; on savedef; faslout 'ineq; in "../src/ineq.red"$ faslend; faslout 'specfn; in "../src/specfn.red"$ faslend; faslout 'specfn2; in "../src/specfn2.red"$ faslend; faslout 'specfaux; in "../src/specfaux.red"$ faslend; faslout 'specbess; in "../src/specbess.red"$ faslend; quit; % end of slowr36.lsp