[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GCL 2.6.13 and Windows

From: Camm Maguire
Subject: GCL 2.6.13 and Windows
Date: Fri, 16 Dec 2022 17:41:56 -0500

Greetings!  This is just a quick note to memorialize the status of our
windows builds.

1. 2.6.13pre supports the original MinGW 32bit (of 2013) and current
cygwin 64bit.

2. Both build maxima and run the testsuite correctly.

3. MinGW seems to have fractured into quite a few branches.  mingw-w64
can eventually be supported, but it defines sizeof long as 4, and this
will require extensive code editing.  Post 2.6.13.

4. cygwin fork has become inoperable, as alluded to in its own docs.
Migrated to CreateProcess here.

5. cygwin provides an sbrk, which has not been tested yet.  sbrk is
emulated as on mingw.

6. gcl needs a) to be able to allocate and recreate on subsequent
execution its heap at the same address, and b) to ensure on 64bit cygwin
that code lies within 2Gb of .text.  On my virtualbox emulator, probing
VirtualAlloc at the lowest permissible base caps the amount allocated at
2Gb, whereas attempting to allocate more can only be achieved >2Gb over
.text.  We default to the former for now.  mingw needs an elevated base
for VirtualAlloc calls to be repeatable, another mystery.  We have
hardcoded an apparently acceptable value.  Neither system can yet make
use of our linker scripts, which might eventually be able to resolve
these issues.

7.  crlf issues abound (as with the maxima git tree).  Make sure to use
cygwin git if building cygwin.  MinGW with native windows git apparently
needs some manual linefeed manipulation of maxima's configure.ac and
tests/*.mac files.

8.  This patch minimizes maxima's final image:

modified   src/Makefile.am
@@ -361,7 +361,7 @@ if GCL_ALT_LINK
        echo '(let ((com (quote (progn (defvar compiler::*gazonk-prefix* 
"gazonk") (defun compiler::gazonk-name (&aux tem)(dotimes (i 1000) (unless 
(probe-file (setq tem (merge-pathnames (format nil "~d~d.lsp" 
compiler::*gazonk-prefix* i))))(return-from compiler::gazonk-name (pathname 
tem))))(error "1000 gazonk names used already!"))(let 
((compiler::*gazonk-prefix* "maxima_gazonk")(compiler::*keep-gaz* 
t))$(LOADDEFSYSTEM)$(DEFSYSTEMLOAD))))))(let ((si::*collect-binary-modules* 
t))(eval com)(let ((compiler::*default-system-p* t))(dolist (l (directory 
"maxima_gazonk*.lsp")) (compile-file l) (delete-file l)))(compiler::link 
si::*binary-modules* "binary-gcl/maxima" (format nil "~S" com) "" nil)(dolist 
(l (directory "maxima_gazonk*.lsp")) (delete-file l)))) (system::quit)' | 
        echo '$(LOADDEFSYSTEM) $(DEFSYSTEMCOMPILE) (system::quit)' | 
-       echo '$(LOADDEFSYSTEM) $(DEFSYSTEMLOAD) (when (fboundp (quote 
si::sgc-on))(si::sgc-on t)) (si:save-system "binary-gcl/maxima") 
(system::quit)'  | $(EXECUTEGCL)
+       echo '(setq si::*optimize-maximum-pages* nil) $(LOADDEFSYSTEM) 
$(DEFSYSTEMLOAD) (setq si::*optimize-maximum-pages* t) (si:save-system 
"binary-gcl/maxima") (system::quit)'  | $(EXECUTEGCL)

I have a local gcl_cleanups branch with this and others to push soon.

9.  I have tagged 130, and this will be released as 2.6.13 within days
barring any showstoppers.

Take care,
Camm Maguire                                        camm@maguirefamily.org
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah

reply via email to

[Prev in Thread] Current Thread [Next in Thread]