Merge branch '24.x.x-rc'

This commit is contained in:
Daniel Kochmański 2024-05-10 13:13:55 +02:00
commit e4269ea51f
156 changed files with 3738 additions and 3319 deletions

View file

@ -27,7 +27,61 @@
install ECL on the preferred destination (specified with "--prefix" install ECL on the preferred destination (specified with "--prefix"
parameter given to configure script). parameter given to configure script).
* Pending changes since 23.9.9 * Pending changes since 24.5.10
- Many internal improvements and bug fixes for the native compiler
* 24.5.10 changes since 23.9.9
** Announcement
Dear Community,
We are announcing a new stable ECL release. The release mainly includes a
number of bug fixes, including changes that prevent rare crashes in the
garbage collector on Mac OS X, some bug fixes for gray streams and for
pathname related functionality. Moreover, the release features new
extensions for gray streams (gray:stream-line-length,
gray:stream-file-length, gray:stream-file-string-length and generic
versions of cl:pathname and cl:truename) as well as improved emscripten
support (allowing shared library builds) and small improvements to the
manual.
We'd like to thank all people who contributed to ECL with code, testing,
issue reports and otherwise.
People listed here contributed code in this iteration: Daniel Kochmański,
Kirill A. Korinsky, Marius Gerbershagen, Tarn W. Burton, Mark Shroyer,
Dmitry Solomennikov, Kevin Zheng.
This release is available for download in a form of a source code archive
(we do not ship prebuilt binaries):
- [ECL 24.5.10 tarball archive](https://common-lisp.net/project/ecl/static/files/release/ecl-24.5.10.tgz)
- [The ECL Manual](https://common-lisp.net/project/ecl/static/manual/)
Happy Hacking,
The ECL Developers
** Enhancements
- Add gray-streams module. This makes it possible to load Gray stream
support via ~(require '#:gray-streams)~ versus calling the internal
function ~gray::redefine-cl-functions~.
- Add support for some Gray stream extensions by adding the following
generic functions.
1) ~gray:stream-line-length~ which allows stream specific line lengths
when ~cl:*print-right-margin*~ is NIL.
2) ~gray:stream-file-length~ which allows Gray streams to implement
~cl:file-length~.
3) ~gray:stream-file-string-length~ which allows Gray streams to
implement ~cl:file-string-length~.
4) Generic versions of ~cl:pathname~ and ~cl:truename~.
- The emscripten target now supports shared libraries.
** Bugs fixed
- Various bug fixes for Gray streams.
- The garbarge collector is set up to automatically handle fork calls on
Unix systems, preventing rare crashes on Mac OS X (where bdwgc does not
enable this option by default).
* 23.9.9 changes since 21.2.1 * 23.9.9 changes since 21.2.1
** Announcement ** Announcement
Dear Community, Dear Community,

207
COPYING
View file

@ -1,112 +1,125 @@
GNU LIBRARY GENERAL PUBLIC LICENSE GNU LESSER GENERAL PUBLIC LICENSE
Version 2, June 1991 Version 2.1, February 1999
Copyright (C) 1991 Free Software Foundation, Inc. Copyright (C) 1991, 1999 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed. of this license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is [This is the first released version of the Lesser GPL. It also counts
numbered 2 because it goes with version 2 of the ordinary GPL.] as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble Preamble
The licenses for most software are designed to take away your The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users. free software--to make sure the software is free for all its users.
This license, the Library General Public License, applies to some This license, the Lesser General Public License, applies to some
specially designated Free Software Foundation software, and to any specially designated software packages--typically libraries--of the
other libraries whose authors decide to use it. You can use it for Free Software Foundation and other authors who decide to use it. You
your libraries, too. can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom, not When we speak of free software, we are referring to freedom of use,
price. Our General Public Licenses are designed to make sure that you not price. Our General Public Licenses are designed to make sure that
have the freedom to distribute copies of free software (and charge for you have the freedom to distribute copies of free software (and charge
this service if you wish), that you receive source code or can get it for this service if you wish); that you receive source code or can get
if you want it, that you can change the software or use pieces of it it if you want it; that you can change the software and use pieces of
in new free programs; and that you know you can do these things. it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights. distributors to deny you these rights or to ask you to surrender these
These restrictions translate to certain responsibilities for you if rights. These restrictions translate to certain responsibilities for
you distribute copies of the library, or if you modify it. you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source you. You must make sure that they, too, receive or can get the source
code. If you link a program with the library, you must provide code. If you link other code with the library, you must provide
complete object files to the recipients so that they can relink them complete object files to the recipients, so that they can relink them
with the library, after making changes to the library and recompiling with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights. it. And you must show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright We protect your rights with a two-step method: (1) we copyright the
the library, and (2) offer you this license which gives you legal library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library. permission to copy, distribute and/or modify the library.
Also, for each distributor's protection, we want to make certain To protect each distributor, we want to make it very clear that
that everyone understands that there is no warranty for this free there is no warranty for the free library. Also, if the library is
library. If the library is modified by someone else and passed on, we modified by someone else and passed on, the recipients should know
want its recipients to know that what they have is not the original that what they have is not the original version, so that the original
version, so that any problems introduced by others will not reflect on author's reputation will not be affected by problems that might be
the original authors' reputations. introduced by others.
Finally, any free program is threatened constantly by software Finally, software patents pose a constant threat to the existence of
patents. We wish to avoid the danger that companies distributing free any free program. We wish to make sure that a company cannot
software will individually obtain patent licenses, thus in effect effectively restrict the users of a free program by obtaining a
transforming the program into proprietary software. To prevent this, restrictive license from a patent holder. Therefore, we insist that
we have made it clear that any patent must be licensed for everyone's any patent license obtained for a version of the library must be
free use or not licensed at all. consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the ordinary Most GNU software, including some libraries, is covered by the
GNU General Public License, which was designed for utility programs. This ordinary GNU General Public License. This license, the GNU Lesser
license, the GNU Library General Public License, applies to certain General Public License, applies to certain designated libraries, and
designated libraries. This license is quite different from the ordinary is quite different from the ordinary General Public License. We use
one; be sure to read it in full, and don't assume that anything in it is this license for certain libraries in order to permit linking those
the same as in the ordinary license. libraries into non-free programs.
The reason we have a separate public license for some libraries is that When a program is linked with a library, whether statically or using
they blur the distinction we usually make between modifying or adding to a a shared library, the combination of the two is legally speaking a
program and simply using it. Linking a program with a library, without combined work, a derivative of the original library. The ordinary
changing the library, is in some sense simply using the library, and is General Public License therefore permits such linking only if the
analogous to running a utility program or application program. However, in entire combination fits its criteria of freedom. The Lesser General
a textual and legal sense, the linked executable is a combined work, a Public License permits more lax criteria for linking other code with
derivative of the original library, and the ordinary General Public License the library.
treats it as such.
Because of this blurred distinction, using the ordinary General We call this license the "Lesser" General Public License because it
Public License for libraries did not effectively promote software does Less to protect the user's freedom than the ordinary General
sharing, because most developers did not use the libraries. We Public License. It also provides other free software developers Less
concluded that weaker conditions might promote sharing better. of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
However, unrestricted linking of non-free programs would deprive the For example, on rare occasions, there may be a special need to
users of those programs of all benefit from the free status of the encourage the widest possible use of a certain library, so that it becomes
libraries themselves. This Library General Public License is intended to a de-facto standard. To achieve this, non-free programs must be
permit developers of non-free programs to use free libraries, while allowed to use the library. A more frequent case is that a free
preserving your freedom as a user of such programs to change the free library does the same job as widely used non-free libraries. In this
libraries that are incorporated in them. (We have not seen how to achieve case, there is little to gain by limiting the free library to free
this as regards changes in header files, but we have achieved it as regards software only, so we use the Lesser General Public License.
changes in the actual functions of the Library.) The hope is that this
will lead to faster development of free libraries. In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The "work based on the library" and a "work that uses the library". The
former contains code derived from the library, while the latter only former contains code derived from the library, whereas the latter must
works together with the library. be combined with the library in order to run.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
GNU LIBRARY GENERAL PUBLIC LICENSE GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which 0. This License Agreement applies to any software library or other
contains a notice placed by the copyright holder or other authorized program which contains a notice placed by the copyright holder or
party saying it may be distributed under the terms of this Library other authorized party saying it may be distributed under the terms of
General Public License (also called "this License"). Each licensee is this Lesser General Public License (also called "this License").
addressed as "you". Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs prepared so as to be conveniently linked with application programs
@ -133,7 +146,7 @@ such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does. and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's 1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an you conspicuously and appropriately publish on each copy an
@ -255,7 +268,7 @@ distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6, Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself. whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also compile or 6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit under terms of your choice, provided that the terms permit
@ -282,23 +295,31 @@ of these things:
Library will not necessarily be able to recompile the application Library will not necessarily be able to recompile the application
to use the modified definitions.) to use the modified definitions.)
b) Accompany the work with a written offer, valid for at b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution. than the cost of performing this distribution.
c) If distribution of the work is made by offering access to copy d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above from a designated place, offer equivalent access to copy the above
specified materials from the same place. specified materials from the same place.
d) Verify that the user has already received a copy of these e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy. materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception, reproducing the executable from it. However, as a special exception,
the source code distributed need not include anything that is normally the materials to be distributed need not include anything that is
distributed (in either source or binary form) with the major normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies which the executable runs, unless that component itself accompanies
the executable. the executable.
@ -347,7 +368,7 @@ Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein. restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to You are not responsible for enforcing compliance by third parties with
this License. this License.
11. If, as a consequence of a court judgment or allegation of patent 11. If, as a consequence of a court judgment or allegation of patent
@ -390,7 +411,7 @@ excluded. In such case, this License incorporates the limitation as if
written in the body of this License. written in the body of this License.
13. The Free Software Foundation may publish revised and/or new 13. The Free Software Foundation may publish revised and/or new
versions of the Library General Public License from time to time. versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version, Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns. but may differ in detail to address new problems or concerns.
@ -411,7 +432,7 @@ decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing of all derivatives of our free software and of promoting the sharing
and reuse of software generally. and reuse of software generally.
NO WARRANTY NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
@ -434,9 +455,9 @@ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES. DAMAGES.
END OF TERMS AND CONDITIONS END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Libraries How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that possible use to the public, we recommend making it free software that
@ -453,18 +474,18 @@ convey the exclusion of warranty; and each file should have at least the
Copyright (C) <year> <name of author> Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version. version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free License along with this library; if not, write to the Free Software
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail. Also add information on how to contact you by electronic and paper mail.

18
INSTALL
View file

@ -127,9 +127,6 @@ Emscripten target is a little fickle so keep in mind that:
- to build emscripten you need to use their SDK that provides the toolchain, and - to build emscripten you need to use their SDK that provides the toolchain, and
set the environment variable EMSDK_PATH set the environment variable EMSDK_PATH
- the optimization level -O0 is forced because otherwsise binaryen miscompiles
ECL
1. Build the host ECL 1. Build the host ECL
#+begin_src shell-script #+begin_src shell-script
@ -166,21 +163,20 @@ After that activate the toolchain and configure build flags:
--build=x86_64-pc-linux-gnu \ --build=x86_64-pc-linux-gnu \
--with-cross-config=`pwd`/src/util/wasm32-unknown-emscripten.cross_config \ --with-cross-config=`pwd`/src/util/wasm32-unknown-emscripten.cross_config \
--prefix=`pwd`/ecl-emscripten \ --prefix=`pwd`/ecl-emscripten \
--disable-shared \
--with-tcp=no \ --with-tcp=no \
--with-cmp=no --with-cmp=no
emmake make && emmake make install emmake make && emmake make install
# some files need to be copied manually # some files need to be copied manually
cp build/bin/ecl.js build/bin/ecl.wasm ecl-emscripten/bin cp build/bin/ecl.js build/bin/ecl.wasm ecl-emscripten/
#+end_src #+end_src
4. ECL may be hosted on a web page. Assuming that you have quicklisp installed: 4. ECL may be hosted on a web page. Assuming that you have quicklisp installed:
#+begin_src shell-script #+begin_src shell-script
export WEBSERVER=`pwd`/src/util/webserver.lisp export WEBSERVER=`pwd`/src/util/webserver.lisp
pushd ecl-emscripten/bin pushd ecl-emscripten/
lisp --load $WEBSERVER lisp --load $WEBSERVER
# After the server is loaded run: # After the server is loaded run:
# firefox localhost:8888/ecl.html # firefox localhost:8888/ecl.html
@ -189,3 +185,13 @@ After that activate the toolchain and configure build flags:
If the output does not show on the webpage then open the javascript console. If the output does not show on the webpage then open the javascript console.
This is a default html website produced by emscripten. This is a default html website produced by emscripten.
5. Build an external program linked against libecl.so
The default stack size proposed by emscripten is 64KB. This is too little for
ECL, so when you build a program that is linked against libecl.so, then it is
imoprtant to specify a different size. For example:
#+begin_src shell-script
emcc program.c -sSTACK_SIZE=1048576 libecl.so -I./ -o program.o
#+end_src

22
LICENSE
View file

@ -1,25 +1,25 @@
---- BEGINNING OF COPYRIGHT FOR THE ECL CORE ENVIRONMENT ------------ ---- BEGINNING OF COPYRIGHT FOR THE ECL CORE ENVIRONMENT ------------
Copyright (c) 2019 Daniel Kochmański and Marius Gerbershagen Copyright (c) 2019-2024 Daniel Kochmański and Marius Gerbershagen
Copyright (c) 2015-2018, Daniel Kochmański Copyright (c) 2015-2018, Daniel Kochmański
Copyright (c) 2000-2013, Juan Jose Garcia Ripoll Copyright (c) 2000-2013, Juan Jose Garcia Ripoll
Copyright (c) 1990, 1991, 1993 Giuseppe Attardi Copyright (c) 1990, 1991, 1993 Giuseppe Attardi
Copyright (c) 1984 Taiichi Yuasa and Masami Hagiya Copyright (c) 1984 Taiichi Yuasa and Masami Hagiya
All Rights Reserved All Rights Reserved
ECL is free software; you can redistribute it and/or modify it ECL is free software; you can redistribute it and/or
under the terms of the GNU Library General Public License as published modify it under the terms of the GNU Lesser General Public
by the Free Software Foundation; either version 2 of the License, or License as published by the Free Software Foundation; either
(at your option) any later version; see file 'Copying'. version 2.1 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
GNU Library General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Library General Public License You should have received a copy of the GNU Lesser General Public
along with this program; if not, write to the Free Software License along with this library; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
PLEASE NOTE THAT: PLEASE NOTE THAT:

View file

@ -77,6 +77,8 @@ INSTALL_TARGET = @INSTALL_TARGET@
install: build/Makefile install: build/Makefile
cd build; $(MAKE) $(INSTALL_TARGET) cd build; $(MAKE) $(INSTALL_TARGET)
flatinstall: build/Makefile
cd build; $(MAKE) flatinstall
uninstall: uninstall:
cd build; $(MAKE) uninstall cd build; $(MAKE) uninstall
@ -115,6 +117,9 @@ realclean: distclean
check: check:
cd build && $(MAKE) check TESTS="$(TESTS)" cd build && $(MAKE) check TESTS="$(TESTS)"
ansi-test:
cd build && $(MAKE) ansi-test
# ==================== Various means of distribution ==================== # ==================== Various means of distribution ====================
TAR_DIR=ecl-$(VERSION) TAR_DIR=ecl-$(VERSION)

View file

@ -122,8 +122,8 @@
(write binary :stream sout :circle t :escape t :readably t :pretty nil)) (write binary :stream sout :circle t :escape t :readably t :pretty nil))
(terpri sout))))) (terpri sout)))))
(when load (when load
(load output-file :verbose *compile-verbose*)) (si::load-bytecodes output-file *compile-verbose* *load-print* :default))
(values output-file nil nil)) (values (truename output-file) nil nil))
(defun install-bytecodes-compiler () (defun install-bytecodes-compiler ()
(ext::package-lock (find-package :cl) nil) (ext::package-lock (find-package :cl) nil)

View file

@ -10,8 +10,8 @@ srcdir = ..\src
SHORT_SITE_NAME = SHORT_SITE_NAME =
LONG_SITE_NAME = LONG_SITE_NAME =
ECL_VERSION = 23.9.9 ECL_VERSION = 24.5.10
ECL_VERSION_NUMBER= 230909 ECL_VERSION_NUMBER= 240510
ARCHITECTURE = PENTIUM4 ARCHITECTURE = PENTIUM4
SOFTWARE_TYPE = NT SOFTWARE_TYPE = NT
SOFTWARE_VERSION = 5.0 SOFTWARE_VERSION = 5.0
@ -274,6 +274,7 @@ compile.lsp: bare.lsp $(srcdir)/compile.lsp.in Makefile
"@LDFLAGS@" "$(LDFLAGS)" \ "@LDFLAGS@" "$(LDFLAGS)" \
"@SHARED_LDFLAGS@" "$(SHARED_LDFLAGS)" \ "@SHARED_LDFLAGS@" "$(SHARED_LDFLAGS)" \
"@BUNDLE_LDFLAGS@" "$(SHARED_LDFLAGS)" \ "@BUNDLE_LDFLAGS@" "$(SHARED_LDFLAGS)" \
"@PROGRAM_LDFLAGS@" "" \
"@CLIBS@" "$(CLIBS)" \ "@CLIBS@" "$(CLIBS)" \
"@STATICLIBS@" "$(STATICLIBS)" \ "@STATICLIBS@" "$(STATICLIBS)" \
"@LIBS@" "$(LIBS)" \ "@LIBS@" "$(LIBS)" \
@ -316,6 +317,7 @@ cmp/cmpdefs.lsp: $(srcdir)/cmp/cmpdefs.lsp Makefile
"@LDFLAGS@" "$(LDFLAGS)" \ "@LDFLAGS@" "$(LDFLAGS)" \
"@SHARED_LDFLAGS@" "$(SHARED_LDFLAGS)" \ "@SHARED_LDFLAGS@" "$(SHARED_LDFLAGS)" \
"@BUNDLE_LDFLAGS@" "$(SHARED_LDFLAGS)" \ "@BUNDLE_LDFLAGS@" "$(SHARED_LDFLAGS)" \
"@PROGRAM_LDFLAGS@" "" \
"@CLIBS@" "$(CLIBS)" \ "@CLIBS@" "$(CLIBS)" \
"@STATICLIBS@" "$(STATICLIBS)" \ "@STATICLIBS@" "$(STATICLIBS)" \
"@OBJEXT@" "obj" \ "@OBJEXT@" "obj" \

View file

@ -1,17 +1,12 @@
/* /*
config.h.in -- Template configuration file. * Copyright (c) 1990, Giuseppe Attardi.
*/ * Copyright (c) 2001, Juan Jose Garcia Ripoll.
/* *
Copyright (c) 1990, Giuseppe Attardi. * See file 'LICENSE' for the copyright details.
Copyright (c) 2001, Juan Jose Garcia Ripoll. *
*/
ECoLisp is free software; you can redistribute it and/or /* config.h.in -- Template configuration file. */
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
See file '../Copyright' for full details.
*/
#define ECL_MS_WINDOWS_HOST #define ECL_MS_WINDOWS_HOST

View file

@ -11,10 +11,10 @@ IF NOT "%1" == "" (
goto LOOP goto LOOP
) )
IF %CMDTYPE% == --compile ( IF "%CMDTYPE%" == "--compile" (
cl @ECL_CFLAGS@ -I@includedir@ %CMDARGS% cl @ECL_CFLAGS@ -I@includedir@ %CMDARGS%
GOTO END GOTO END
) ELSE IF %CMDTYPE% == --link ( ) ELSE IF "%CMDTYPE%" == "--link" (
cl %CMDARGS% @LDFLAGS@ @libdir@/ecl.lib cl %CMDARGS% @LDFLAGS@ @libdir@/ecl.lib
GOTO END GOTO END
) )

View file

@ -2,10 +2,10 @@
REM Script converted from ecl-config REM Script converted from ecl-config
REM (Michael Goffioul) REM (Michael Goffioul)
IF %1 == --cflags ( IF "%1" == "--cflags" (
ECHO @ECL_CFLAGS@ -I@includedir@ ECHO @ECL_CFLAGS@ -I@includedir@
GOTO END GOTO END
) ELSE IF %1 == --libs ( ) ELSE IF "%1" == "--libs" (
ECHO @LDFLAGS@ /link /LIBPATH:@libdir@ ecl.lib @CLIBS@ ECHO @LDFLAGS@ /link /LIBPATH:@libdir@ ecl.lib @CLIBS@
GOTO END GOTO END
) )

View file

@ -273,6 +273,9 @@ test_changes:
check: check:
cd tests && $(MAKE) clean && $(MAKE) check TESTS="$(TESTS)" cd tests && $(MAKE) clean && $(MAKE) check TESTS="$(TESTS)"
ansi-test:
cd tests && $(MAKE) clean && $(MAKE) ansi-test
# #
# Rebuild ECL using its own image and compare. Does not work # Rebuild ECL using its own image and compare. Does not work
# right now. # right now.

5
src/aclocal.m4 vendored
View file

@ -533,6 +533,11 @@ case "${host}" in
enable_threads='no' enable_threads='no'
enable_libffi='no' enable_libffi='no'
enable_gmp='portable' enable_gmp='portable'
with_c_gmp=yes
SHARED_LDFLAGS="-shared -sSIDE_MODULE ${LDFLAGS}"
BUNDLE_LDFLAGS="-shared -sSIDE_MODULE ${LDFLAGS}"
PROGRAM_LDFLAGS="-sMAIN_MODULE -sERROR_ON_UNDEFINED_SYMBOLS=0 ${LDFLAGS}"
INSTALL_TARGET='flatinstall'
;; ;;
esac esac

View file

@ -760,10 +760,15 @@ init_alloc(void)
* the begining or to the first byte. * the begining or to the first byte.
* 3) Out of the incremental garbage collector, we only use the * 3) Out of the incremental garbage collector, we only use the
* generational component. * generational component.
* 4) GC should handle fork() which is used to run subprocess on
* some platforms.
*/ */
GC_set_no_dls(1); GC_set_no_dls(1);
GC_set_all_interior_pointers(0); GC_set_all_interior_pointers(0);
GC_set_time_limit(GC_TIME_UNLIMITED); GC_set_time_limit(GC_TIME_UNLIMITED);
#ifndef ECL_MS_WINDOWS_HOST
GC_set_handle_fork(1);
#endif
GC_init(); GC_init();
#ifdef ECL_THREADS #ifdef ECL_THREADS
# if GC_VERSION_MAJOR > 7 || GC_VERSION_MINOR > 1 # if GC_VERSION_MAJOR > 7 || GC_VERSION_MINOR > 1

View file

@ -2,18 +2,13 @@
/* vim: set filetype=c tabstop=8 shiftwidth=4 expandtab: */ /* vim: set filetype=c tabstop=8 shiftwidth=4 expandtab: */
/* /*
fpe_none.c -- Nonportable component of the floating point code (dummy) * fpe_none.c -- Nonportable component of the floating point code (dummy)
*/ *
/* * Copyright (c) 2005, Juan Jose Garcia Ripoll.
Copyright (c) 2005, Juan Jose Garcia Ripoll. *
* See file 'LICENSE' for the copyright details.
ECL is free software; you can redistribute it and/or *
modify it under the terms of the GNU Library General Public */
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
See file '../Copyright' for full details.
*/
/* /*
* The ecl_detect_fpe() is a macro (or a function) that detects whether a * The ecl_detect_fpe() is a macro (or a function) that detects whether a

View file

@ -2,23 +2,16 @@
/* vim: set filetype=c tabstop=8 shiftwidth=4 expandtab: */ /* vim: set filetype=c tabstop=8 shiftwidth=4 expandtab: */
/* /*
fpe_x86.c -- Nonportable component of the floating point code * fpe_x86.c -- Nonportable component of the floating point code
*/ *
/* * Copyright (c) 2005, Juan Jose Garcia Ripoll.
Copyright (c) 2005, Juan Jose Garcia Ripoll. *
* See file 'LICENSE' for the copyright details.
ECL is free software; you can redistribute it and/or *
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
See file '../Copyright' for full details.
*/
/*
* See fpe_none.c for a description
*/ */
/* See fpe_none.c for a description. */
#ifdef _MSC_VER #ifdef _MSC_VER
# ifdef _WIN64 # ifdef _WIN64
# error "This file shouldn't have been included!" # error "This file shouldn't have been included!"

View file

@ -224,6 +224,20 @@ not_output_finish_output(cl_object strm)
not_an_output_stream(strm); not_an_output_stream(strm);
} }
static cl_object
not_output_string_length(cl_object strm, cl_object string)
{
not_an_output_stream(strm);
return 0;
}
static cl_object
not_file_string_length(cl_object strm, cl_object string)
{
not_a_file_stream(strm);
return 0;
}
static int static int
unknown_column(cl_object strm) unknown_column(cl_object strm)
{ {
@ -1158,6 +1172,51 @@ utf_8_encoder(cl_object stream, unsigned char *buffer, ecl_character c)
} }
#endif #endif
static cl_index
compute_char_size(cl_object stream, ecl_character c)
{
unsigned char buffer[5];
int l = 0;
if (c == ECL_CHAR_CODE_NEWLINE) {
int flags = stream->stream.flags;
if (flags & ECL_STREAM_CR) {
l += stream->stream.encoder(stream, buffer, ECL_CHAR_CODE_RETURN);
if (flags & ECL_STREAM_LF)
l += stream->stream.encoder(stream, buffer,
ECL_CHAR_CODE_LINEFEED);
} else {
l += stream->stream.encoder(stream, buffer, ECL_CHAR_CODE_LINEFEED);
}
} else {
l += stream->stream.encoder(stream, buffer, c);
}
return l;
}
cl_object
file_string_length(cl_object stream, cl_object string)
{
cl_fixnum l = 0;
switch (ecl_t_of(string)) {
#ifdef ECL_UNICODE
case t_string:
#endif
case t_base_string: {
cl_index i;
for (i = 0; i < string->base_string.fillp; i++) {
l += compute_char_size(stream, ecl_char(string, i));
}
break;
}
case t_character:
l = compute_char_size(stream, ECL_CHAR_CODE(string));
break;
default:
FEwrong_type_nth_arg(@[file-string-length], 2, string, @[string]);
}
return ecl_make_fixnum(l);
}
/******************************************************************************** /********************************************************************************
* CLOS STREAMS * CLOS STREAMS
*/ */
@ -1313,7 +1372,11 @@ clos_stream_element_type(cl_object strm)
return _ecl_funcall2(@'gray::stream-element-type', strm); return _ecl_funcall2(@'gray::stream-element-type', strm);
} }
#define clos_stream_length not_a_file_stream static cl_object
clos_stream_length(cl_object strm)
{
return _ecl_funcall2(@'gray::stream-file-length', strm);
}
static cl_object static cl_object
clos_stream_get_position(cl_object strm) clos_stream_get_position(cl_object strm)
@ -1327,6 +1390,12 @@ clos_stream_set_position(cl_object strm, cl_object pos)
return _ecl_funcall3(@'gray::stream-file-position', strm, pos); return _ecl_funcall3(@'gray::stream-file-position', strm, pos);
} }
static cl_object
clos_stream_string_length(cl_object strm, cl_object string)
{
return _ecl_funcall3(@'gray::stream-file-string-length', strm, string);
}
static int static int
clos_stream_column(cl_object strm) clos_stream_column(cl_object strm)
{ {
@ -1334,6 +1403,18 @@ clos_stream_column(cl_object strm)
return Null(col)? -1 : ecl_to_size(ecl_floor1(col)); return Null(col)? -1 : ecl_to_size(ecl_floor1(col));
} }
static cl_object
clos_stream_pathname(cl_object strm)
{
return _ecl_funcall2(@'gray::pathname', strm);
}
static cl_object
clos_stream_truename(cl_object strm)
{
return _ecl_funcall2(@'gray::truename', strm);
}
static cl_object static cl_object
clos_stream_close(cl_object strm) clos_stream_close(cl_object strm)
{ {
@ -1369,7 +1450,12 @@ const struct ecl_file_ops clos_stream_ops = {
clos_stream_length, clos_stream_length,
clos_stream_get_position, clos_stream_get_position,
clos_stream_set_position, clos_stream_set_position,
clos_stream_string_length,
clos_stream_column, clos_stream_column,
clos_stream_pathname,
clos_stream_truename,
clos_stream_close clos_stream_close
}; };
#endif /* ECL_CLOS_STREAMS */ #endif /* ECL_CLOS_STREAMS */
@ -1401,6 +1487,26 @@ str_out_get_position(cl_object strm)
return ecl_make_unsigned_integer(STRING_OUTPUT_STRING(strm)->base_string.fillp); return ecl_make_unsigned_integer(STRING_OUTPUT_STRING(strm)->base_string.fillp);
} }
static cl_object
str_out_string_length(cl_object strm, cl_object string)
{
cl_fixnum l = 0;
switch (ecl_t_of(string)) {
#ifdef ECL_UNICODE
case t_string:
#endif
case t_base_string:
l = string->base_string.fillp;
break;
case t_character:
l = 1;
break;
default:
FEwrong_type_nth_arg(@[file-string-length], 2, string, @[string]);
}
return ecl_make_fixnum(l);
}
static cl_object static cl_object
str_out_set_position(cl_object strm, cl_object pos) str_out_set_position(cl_object strm, cl_object pos)
{ {
@ -1450,7 +1556,12 @@ const struct ecl_file_ops str_out_ops = {
not_a_file_stream, /* length */ not_a_file_stream, /* length */
str_out_get_position, str_out_get_position,
str_out_set_position, str_out_set_position,
str_out_string_length,
generic_column, generic_column,
not_a_file_stream,
not_a_file_stream,
generic_close generic_close
}; };
@ -1638,7 +1749,12 @@ const struct ecl_file_ops str_in_ops = {
not_a_file_stream, /* length */ not_a_file_stream, /* length */
str_in_get_position, str_in_get_position,
str_in_set_position, str_in_set_position,
not_output_string_length,
unknown_column, unknown_column,
not_a_file_stream,
not_a_file_stream,
generic_close generic_close
}; };
@ -1834,7 +1950,12 @@ const struct ecl_file_ops two_way_ops = {
not_a_file_stream, /* length */ not_a_file_stream, /* length */
generic_always_nil, /* get_position */ generic_always_nil, /* get_position */
generic_set_position, generic_set_position,
not_file_string_length,
two_way_column, two_way_column,
not_a_file_stream,
not_a_file_stream,
two_way_close two_way_close
}; };
@ -1971,6 +2092,15 @@ broadcast_set_position(cl_object strm, cl_object pos)
return ecl_file_position_set(ECL_CONS_CAR(l), pos); return ecl_file_position_set(ECL_CONS_CAR(l), pos);
} }
cl_object
broadcast_string_length(cl_object strm, cl_object string)
{
cl_object l = BROADCAST_STREAM_LIST(strm);
if (Null(l))
return ecl_make_fixnum(1);
return ecl_file_string_length(ECL_CONS_CAR(ecl_last(l, 1)), string);
}
static int static int
broadcast_column(cl_object strm) broadcast_column(cl_object strm)
{ {
@ -2018,7 +2148,12 @@ const struct ecl_file_ops broadcast_ops = {
broadcast_length, broadcast_length,
broadcast_get_position, broadcast_get_position,
broadcast_set_position, broadcast_set_position,
broadcast_string_length,
broadcast_column, broadcast_column,
not_a_file_stream,
not_a_file_stream,
broadcast_close broadcast_close
}; };
@ -2203,7 +2338,12 @@ const struct ecl_file_ops echo_ops = {
not_a_file_stream, /* length */ not_a_file_stream, /* length */
generic_always_nil, /* get_position */ generic_always_nil, /* get_position */
generic_set_position, generic_set_position,
not_file_string_length,
echo_column, echo_column,
not_a_file_stream,
not_a_file_stream,
echo_close echo_close
}; };
@ -2349,7 +2489,12 @@ const struct ecl_file_ops concatenated_ops = {
not_a_file_stream, /* length */ not_a_file_stream, /* length */
generic_always_nil, /* get_position */ generic_always_nil, /* get_position */
generic_set_position, generic_set_position,
not_output_string_length,
unknown_column, unknown_column,
not_a_file_stream,
not_a_file_stream,
concatenated_close concatenated_close
}; };
@ -2523,12 +2668,30 @@ synonym_set_position(cl_object strm, cl_object pos)
return ecl_file_position_set(SYNONYM_STREAM_STREAM(strm), pos); return ecl_file_position_set(SYNONYM_STREAM_STREAM(strm), pos);
} }
static cl_object
synonym_string_length(cl_object strm, cl_object string)
{
return ecl_file_string_length(SYNONYM_STREAM_STREAM(strm), string);
}
static int static int
synonym_column(cl_object strm) synonym_column(cl_object strm)
{ {
return ecl_file_column(SYNONYM_STREAM_STREAM(strm)); return ecl_file_column(SYNONYM_STREAM_STREAM(strm));
} }
static cl_object
synonym_pathname(cl_object strm)
{
return ecl_stream_pathname(SYNONYM_STREAM_STREAM(strm));
}
static cl_object
synonym_truename(cl_object strm)
{
return ecl_stream_truename(SYNONYM_STREAM_STREAM(strm));
}
const struct ecl_file_ops synonym_ops = { const struct ecl_file_ops synonym_ops = {
synonym_write_byte8, synonym_write_byte8,
synonym_read_byte8, synonym_read_byte8,
@ -2558,7 +2721,12 @@ const struct ecl_file_ops synonym_ops = {
synonym_length, synonym_length,
synonym_get_position, synonym_get_position,
synonym_set_position, synonym_set_position,
synonym_string_length,
synonym_column, synonym_column,
synonym_pathname,
synonym_truename,
generic_close generic_close
}; };
@ -3053,6 +3221,18 @@ io_file_write_vector(cl_object strm, cl_object data, cl_index start, cl_index en
return generic_write_vector(strm, data, start, end); return generic_write_vector(strm, data, start, end);
} }
static cl_object
io_file_pathname(cl_object strm)
{
return IO_STREAM_FILENAME(strm);
}
static cl_object
io_file_truename(cl_object strm)
{
return cl_truename(IO_STREAM_FILENAME(strm));
}
const struct ecl_file_ops io_file_ops = { const struct ecl_file_ops io_file_ops = {
io_file_write_byte8, io_file_write_byte8,
io_file_read_byte8, io_file_read_byte8,
@ -3082,7 +3262,12 @@ const struct ecl_file_ops io_file_ops = {
io_file_length, io_file_length,
io_file_get_position, io_file_get_position,
io_file_set_position, io_file_set_position,
file_string_length,
generic_column, generic_column,
io_file_pathname,
io_file_truename,
io_file_close io_file_close
}; };
@ -3115,7 +3300,12 @@ const struct ecl_file_ops output_file_ops = {
io_file_length, io_file_length,
io_file_get_position, io_file_get_position,
io_file_set_position, io_file_set_position,
file_string_length,
generic_column, generic_column,
io_file_pathname,
io_file_truename,
io_file_close io_file_close
}; };
@ -3148,7 +3338,12 @@ const struct ecl_file_ops input_file_ops = {
io_file_length, io_file_length,
io_file_get_position, io_file_get_position,
io_file_set_position, io_file_set_position,
not_output_string_length,
unknown_column, unknown_column,
io_file_pathname,
io_file_truename,
io_file_close io_file_close
}; };
@ -3734,7 +3929,12 @@ const struct ecl_file_ops io_stream_ops = {
io_stream_length, io_stream_length,
io_stream_get_position, io_stream_get_position,
io_stream_set_position, io_stream_set_position,
file_string_length,
generic_column, generic_column,
io_file_pathname,
io_file_truename,
io_stream_close io_stream_close
}; };
@ -3767,7 +3967,12 @@ const struct ecl_file_ops output_stream_ops = {
io_stream_length, io_stream_length,
io_stream_get_position, io_stream_get_position,
io_stream_set_position, io_stream_set_position,
file_string_length,
generic_column, generic_column,
io_file_pathname,
io_file_truename,
io_stream_close io_stream_close
}; };
@ -3800,7 +4005,12 @@ const struct ecl_file_ops input_stream_ops = {
io_stream_length, io_stream_length,
io_stream_get_position, io_stream_get_position,
io_stream_set_position, io_stream_set_position,
not_output_string_length,
unknown_column, unknown_column,
io_file_pathname,
io_file_truename,
io_stream_close io_stream_close
}; };
@ -3944,8 +4154,12 @@ const struct ecl_file_ops winsock_stream_io_ops = {
not_a_file_stream, not_a_file_stream,
generic_always_nil, /* get_position */ generic_always_nil, /* get_position */
generic_set_position, generic_set_position,
file_string_length,
generic_column, generic_column,
not_a_file_stream,
not_a_file_stream,
winsock_stream_close winsock_stream_close
}; };
@ -3978,8 +4192,12 @@ const struct ecl_file_ops winsock_stream_output_ops = {
not_a_file_stream, not_a_file_stream,
generic_always_nil, /* get_position */ generic_always_nil, /* get_position */
generic_set_position, generic_set_position,
file_string_length,
generic_column, generic_column,
not_a_file_stream,
not_a_file_stream,
winsock_stream_close winsock_stream_close
}; };
@ -4012,8 +4230,12 @@ const struct ecl_file_ops winsock_stream_input_ops = {
not_a_file_stream, not_a_file_stream,
generic_always_nil, /* get_position */ generic_always_nil, /* get_position */
generic_set_position, generic_set_position,
not_output_string_length,
unknown_column, unknown_column,
not_a_file_stream,
not_a_file_stream,
winsock_stream_close winsock_stream_close
}; };
#endif #endif
@ -4117,8 +4339,12 @@ const struct ecl_file_ops wcon_stream_io_ops = {
not_a_file_stream, not_a_file_stream,
generic_always_nil, /* get_position */ generic_always_nil, /* get_position */
generic_set_position, generic_set_position,
file_string_length,
generic_column, generic_column,
io_file_pathname,
io_file_truename,
generic_close, generic_close,
}; };
@ -4312,7 +4538,7 @@ ecl_make_stream_from_FILE(cl_object fname, void *f, enum ecl_smmode smm,
FEerror("Not a valid mode ~D for ecl_make_stream_from_FILE", 1, ecl_make_fixnum(smm)); FEerror("Not a valid mode ~D for ecl_make_stream_from_FILE", 1, ecl_make_fixnum(smm));
} }
set_stream_elt_type(stream, byte_size, flags, external_format); set_stream_elt_type(stream, byte_size, flags, external_format);
IO_STREAM_FILENAME(stream) = fname; /* not really used */ IO_STREAM_FILENAME(stream) = fname;
stream->stream.column = 0; stream->stream.column = 0;
IO_STREAM_FILE(stream) = f; IO_STREAM_FILE(stream) = f;
stream->stream.last_op = 0; stream->stream.last_op = 0;
@ -4589,7 +4815,12 @@ const struct ecl_file_ops seq_in_ops = {
not_a_file_stream, /* length */ not_a_file_stream, /* length */
seq_in_get_position, seq_in_get_position,
seq_in_set_position, seq_in_set_position,
not_output_string_length,
unknown_column, unknown_column,
not_a_file_stream,
not_a_file_stream,
generic_close generic_close
}; };
@ -4794,7 +5025,12 @@ const struct ecl_file_ops seq_out_ops = {
not_a_file_stream, /* length */ not_a_file_stream, /* length */
seq_out_get_position, seq_out_get_position,
seq_out_set_position, seq_out_set_position,
not_output_string_length,
generic_column, generic_column,
not_a_file_stream,
not_a_file_stream,
generic_close generic_close
}; };
@ -4984,6 +5220,12 @@ ecl_file_position_set(cl_object strm, cl_object pos)
return stream_dispatch_table(strm)->set_position(strm, pos); return stream_dispatch_table(strm)->set_position(strm, pos);
} }
cl_object
ecl_file_string_length(cl_object strm, cl_object string)
{
return stream_dispatch_table(strm)->string_length(strm, string);
}
bool bool
ecl_input_stream_p(cl_object strm) ecl_input_stream_p(cl_object strm)
{ {
@ -5008,6 +5250,18 @@ ecl_interactive_stream_p(cl_object strm)
return stream_dispatch_table(strm)->interactive_p(strm); return stream_dispatch_table(strm)->interactive_p(strm);
} }
cl_object
ecl_stream_pathname(cl_object strm)
{
return stream_dispatch_table(strm)->pathname(strm);
}
cl_object
ecl_stream_truename(cl_object strm)
{
return stream_dispatch_table(strm)->truename(strm);
}
/* /*
* ecl_read_char(s) tries to read a character from the stream S. It outputs * ecl_read_char(s) tries to read a character from the stream S. It outputs
* either the code of the character read, or EOF. Whe compiled with * either the code of the character read, or EOF. Whe compiled with
@ -5046,74 +5300,10 @@ writestr_stream(const char *s, cl_object strm)
si_put_buffer_string(buffer); si_put_buffer_string(buffer);
} }
static cl_index
compute_char_size(cl_object stream, ecl_character c)
{
unsigned char buffer[5];
int l = 0;
if (c == ECL_CHAR_CODE_NEWLINE) {
int flags = stream->stream.flags;
if (flags & ECL_STREAM_CR) {
l += stream->stream.encoder(stream, buffer, ECL_CHAR_CODE_RETURN);
if (flags & ECL_STREAM_LF)
l += stream->stream.encoder(stream, buffer,
ECL_CHAR_CODE_LINEFEED);
} else {
l += stream->stream.encoder(stream, buffer, ECL_CHAR_CODE_LINEFEED);
}
} else {
l += stream->stream.encoder(stream, buffer, c);
}
return l;
}
cl_object cl_object
cl_file_string_length(cl_object stream, cl_object string) cl_file_string_length(cl_object stream, cl_object string)
{ {
cl_fixnum l = 0; @(return ecl_file_string_length(stream, string));
/* This is a stupid requirement from the spec. Why returning 1???
* Why not simply leaving the value unspecified, as with other
* streams one cannot write to???
*/
BEGIN:
#ifdef ECL_CLOS_STREAMS
if (ECL_INSTANCEP(stream)) {
@(return ECL_NIL);
}
#endif
unlikely_if (!ECL_ANSI_STREAM_P(stream)) {
FEwrong_type_only_arg(@[file-string-length], stream, @[stream]);
}
if (stream->stream.mode == ecl_smm_broadcast) {
stream = BROADCAST_STREAM_LIST(stream);
if (Null(stream)) {
@(return ecl_make_fixnum(1));
} else {
stream = ECL_CONS_CAR(ecl_last(stream, 1));
goto BEGIN;
}
}
unlikely_if (!ECL_FILE_STREAM_P(stream)) {
not_a_file_stream(stream);
}
switch (ecl_t_of(string)) {
#ifdef ECL_UNICODE
case t_string:
#endif
case t_base_string: {
cl_index i;
for (i = 0; i < string->base_string.fillp; i++) {
l += compute_char_size(stream, ecl_char(string, i));
}
break;
}
case t_character:
l = compute_char_size(stream, ECL_CHAR_CODE(string));
break;
default:
FEwrong_type_nth_arg(@[file-string-length], 2, string, @[string]);
}
@(return ecl_make_fixnum(l));
} }
cl_object cl_object

View file

@ -83,7 +83,11 @@ cl_fixnum ecl_option_values[ECL_OPT_LIMIT+1] = {
1, /* ECL_OPT_TRAP_SIGBUS */ 1, /* ECL_OPT_TRAP_SIGBUS */
1, /* ECL_OPT_TRAP_SIGPIPE */ 1, /* ECL_OPT_TRAP_SIGPIPE */
1, /* ECL_OPT_TRAP_INTERRUPT_SIGNAL */ 1, /* ECL_OPT_TRAP_INTERRUPT_SIGNAL */
#if defined(ECL_THREADS) && defined(HAVE_SIGPROCMASK)
1, /* ECL_OPT_SIGNAL_HANDLING_THREAD */ 1, /* ECL_OPT_SIGNAL_HANDLING_THREAD */
#else
0, /* ECL_OPT_SIGNAL_HANDLING_THREAD */
#endif
16, /* ECL_OPT_SIGNAL_QUEUE_SIZE */ 16, /* ECL_OPT_SIGNAL_QUEUE_SIZE */
0, /* ECL_OPT_BOOTED */ 0, /* ECL_OPT_BOOTED */
8192, /* ECL_OPT_BIND_STACK_SIZE */ 8192, /* ECL_OPT_BIND_STACK_SIZE */
@ -840,83 +844,6 @@ si_argv(cl_object index)
FEerror("Illegal argument index: ~S.", 1, index); FEerror("Illegal argument index: ~S.", 1, index);
} }
cl_object
si_getenv(cl_object var)
{
const char *value;
/* Strings have to be null terminated base strings */
var = si_copy_to_simple_base_string(var);
value = getenv((char*)var->base_string.self);
@(return ((value == NULL)? ECL_NIL : ecl_make_simple_base_string(value,-1)));
}
#if defined(HAVE_SETENV) || defined(HAVE_PUTENV)
cl_object
si_setenv(cl_object var, cl_object value)
{
const cl_env_ptr the_env = ecl_process_env();
cl_fixnum ret_val;
/* Strings have to be null terminated base strings */
var = si_copy_to_simple_base_string(var);
if (value == ECL_NIL) {
#ifdef HAVE_SETENV
/* Remove the variable when setting to nil, so that
* (si:setenv "foo" nil), then (si:getenv "foo) returns
* the right thing. */
unsetenv((char*)var->base_string.self);
#else
#if defined(ECL_MS_WINDOWS_HOST)
si_setenv(var, cl_core.null_string);
#else
putenv((char*)var->base_string.self);
#endif
#endif
ret_val = 0;
} else {
#ifdef HAVE_SETENV
value = si_copy_to_simple_base_string(value);
ret_val = setenv((char*)var->base_string.self,
(char*)value->base_string.self, 1);
#else
value = cl_format(4, ECL_NIL, @"~A=~A", var,
value);
value = si_copy_to_simple_base_string(value);
putenv((char*)value->base_string.self);
#endif
}
if (ret_val == -1)
CEerror(ECL_T, "SI:SETENV failed: insufficient space in environment.",
1, ECL_NIL);
ecl_return1(the_env, value);
}
#endif
cl_object
si_environ(void)
{
cl_object output = ECL_NIL;
#ifdef HAVE_ENVIRON
char **p;
extern char **environ;
for (p = environ; *p; p++) {
output = CONS(ecl_make_constant_base_string(*p,-1), output);
}
output = cl_nreverse(output);
#else
# if defined(ECL_MS_WINDOWS_HOST)
LPTCH p;
for (p = GetEnvironmentStrings(); *p; ) {
output = CONS(ecl_make_constant_base_string(p,-1), output);
do { (void)0; } while (*(p++));
}
output = cl_nreverse(output);
# endif
#endif /* HAVE_ENVIRON */
@(return output);
}
cl_object cl_object
si_pointer(cl_object x) si_pointer(cl_object x)
{ {

View file

@ -746,27 +746,15 @@ cl_pathname(cl_object x)
x = cl_parse_namestring(1, x); x = cl_parse_namestring(1, x);
case t_pathname: case t_pathname:
break; break;
case t_stream: default:
switch ((enum ecl_smmode)x->stream.mode) { if (!Null(cl_streamp(x))) {
case ecl_smm_input: x = ecl_stream_pathname(x);
case ecl_smm_output:
case ecl_smm_probe:
case ecl_smm_io:
case ecl_smm_input_file:
case ecl_smm_output_file:
case ecl_smm_io_file:
x = IO_STREAM_FILENAME(x);
goto L; goto L;
case ecl_smm_synonym: } else {
x = SYNONYM_STREAM_STREAM(x); const char *type = "(OR FILE-STREAM STRING PATHNAME)";
goto L; FEwrong_type_only_arg(@[pathname], x, ecl_read_from_cstring(type));
default:
;/* Fall through to error message */
} }
default: { break;
const char *type = "(OR FILE-STREAM STRING PATHNAME)";
FEwrong_type_only_arg(@[pathname], x, ecl_read_from_cstring(type));
}
} }
@(return x); @(return x);
} }
@ -785,7 +773,6 @@ cl_logical_pathname(cl_object x)
@(return x); @(return x);
} }
/* FIXME! WILD-PATHNAME-P is missing! */
@(defun wild-pathname-p (pathname &optional component) @(defun wild-pathname-p (pathname &optional component)
bool checked = 0; bool checked = 0;
@ @

View file

@ -2,15 +2,11 @@
/* vim: set filetype=c tabstop=8 shiftwidth=4 expandtab: */ /* vim: set filetype=c tabstop=8 shiftwidth=4 expandtab: */
/* /*
Copyright (c) 2010, Juan Jose Garcia Ripoll. * Copyright (c) 2010, Juan Jose Garcia Ripoll.
*
ECL is free software; you can redistribute it and/or * See file 'LICENSE' for the copyright details.
modify it under the terms of the GNU Library General Public *
License as published by the Free Software Foundation; either */
version 2 of the License, or (at your option) any later version.
See file '../../Copyright' for full details.
*/
#define ECL_INCLUDE_MATH_H #define ECL_INCLUDE_MATH_H
#include <float.h> #include <float.h>

View file

@ -1579,7 +1579,8 @@ do_read_delimited_list(int d, cl_object in, bool proper_list)
if (!ECL_ANSI_STREAM_P(strm)) { if (!ECL_ANSI_STREAM_P(strm)) {
value0 = _ecl_funcall2(@'gray::stream-read-line', strm); value0 = _ecl_funcall2(@'gray::stream-read-line', strm);
value1 = ecl_nth_value(the_env, 1); value1 = ecl_nth_value(the_env, 1);
if (Null(value0) && !Null(value1)) { if ((Null(value0) || (ECL_STRINGP(value0) && (ecl_length(value0) == 0))) &&
!Null(value1)) {
if (!Null(eof_errorp)) if (!Null(eof_errorp))
FEend_of_file(strm); FEend_of_file(strm);
value0 = eof_value; value0 = eof_value;

View file

@ -807,7 +807,7 @@ si_set_limit(cl_object type, cl_object limit)
} else if (type == @'ext::lisp-stack') { } else if (type == @'ext::lisp-stack') {
cl_index the_size = ecl_to_size(limit); cl_index the_size = ecl_to_size(limit);
ecl_stack_set_size(env, the_size); ecl_stack_set_size(env, the_size);
} else { } else if (type == @'ext::heap-size') {
/* /*
* size_t can be larger than cl_index, and ecl_to_size() * size_t can be larger than cl_index, and ecl_to_size()
* creates a fixnum which is too small for size_t on 32-bit. * creates a fixnum which is too small for size_t on 32-bit.
@ -823,7 +823,7 @@ cl_object
si_get_limit(cl_object type) si_get_limit(cl_object type)
{ {
cl_env_ptr env = ecl_process_env(); cl_env_ptr env = ecl_process_env();
cl_index output; cl_index output = 0;
if (type == @'ext::frame-stack') if (type == @'ext::frame-stack')
output = env->frs_limit_size; output = env->frs_limit_size;
else if (type == @'ext::binding-stack') else if (type == @'ext::binding-stack')
@ -832,7 +832,7 @@ si_get_limit(cl_object type)
output = env->cs_limit_size; output = env->cs_limit_size;
else if (type == @'ext::lisp-stack') else if (type == @'ext::lisp-stack')
output = env->stack_limit_size; output = env->stack_limit_size;
else { else if (type == @'ext::heap-size') {
/* size_t can be larger than cl_index */ /* size_t can be larger than cl_index */
ecl_return1(env, ecl_make_unsigned_integer(cl_core.max_heap_size)); ecl_return1(env, ecl_make_unsigned_integer(cl_core.max_heap_size));
} }

View file

@ -1846,6 +1846,8 @@ cl_symbols[] = {
{SYS_ "APPLY-FROM-STACK-FRAME" ECL_FUN("si_apply_from_stack_frame", si_apply_from_stack_frame, 2) ECL_VAR(SI_ORDINARY, OBJNULL)}, {SYS_ "APPLY-FROM-STACK-FRAME" ECL_FUN("si_apply_from_stack_frame", si_apply_from_stack_frame, 2) ECL_VAR(SI_ORDINARY, OBJNULL)},
#ifdef ECL_CLOS_STREAMS #ifdef ECL_CLOS_STREAMS
{GRAY_ "PATHNAME" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "TRUENAME" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "CLOSE" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)}, {GRAY_ "CLOSE" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "STREAMP" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)}, {GRAY_ "STREAMP" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "INPUT-STREAM-P" ECL_FUN(NULL, NULL, 1) ECL_VAR(GRAY_ORDINARY, OBJNULL)}, {GRAY_ "INPUT-STREAM-P" ECL_FUN(NULL, NULL, 1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
@ -1856,12 +1858,15 @@ cl_symbols[] = {
{GRAY_ "STREAM-CLEAR-OUTPUT" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)}, {GRAY_ "STREAM-CLEAR-OUTPUT" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "STREAM-ELEMENT-TYPE" ECL_FUN(NULL, NULL, 1) ECL_VAR(GRAY_ORDINARY, OBJNULL)}, {GRAY_ "STREAM-ELEMENT-TYPE" ECL_FUN(NULL, NULL, 1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "STREAM-FILE-DESCRIPTOR" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)}, {GRAY_ "STREAM-FILE-DESCRIPTOR" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "STREAM-FILE-LENGTH" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "STREAM-FILE-POSITION" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)}, {GRAY_ "STREAM-FILE-POSITION" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "STREAM-FILE-STRING-LENGTH" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "STREAM-FINISH-OUTPUT" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)}, {GRAY_ "STREAM-FINISH-OUTPUT" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "STREAM-FORCE-OUTPUT" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)}, {GRAY_ "STREAM-FORCE-OUTPUT" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "STREAM-FRESH-LINE" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)}, {GRAY_ "STREAM-FRESH-LINE" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "STREAM-INTERACTIVE-P" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)}, {GRAY_ "STREAM-INTERACTIVE-P" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "STREAM-LINE-COLUMN" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)}, {GRAY_ "STREAM-LINE-COLUMN" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "STREAM-LINE-LENGTH" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "STREAM-LISTEN" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)}, {GRAY_ "STREAM-LISTEN" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "STREAM-PEEK-CHAR" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)}, {GRAY_ "STREAM-PEEK-CHAR" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
{GRAY_ "STREAM-READ-BYTE" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)}, {GRAY_ "STREAM-READ-BYTE" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},

View file

@ -460,6 +460,9 @@ file_truename(cl_object pathname, cl_object filename, int flags)
cl_object cl_object
cl_truename(cl_object orig_pathname) cl_truename(cl_object orig_pathname)
{ {
if (!Null(cl_streamp(orig_pathname)))
@(return ecl_stream_truename(orig_pathname));
cl_object pathname = make_absolute_pathname(orig_pathname); cl_object pathname = make_absolute_pathname(orig_pathname);
cl_object base_dir = make_base_pathname(pathname); cl_object base_dir = make_base_pathname(pathname);
cl_object dir; cl_object dir;
@ -749,10 +752,10 @@ ecl_homedir_pathname(cl_object user)
#ifdef HAVE_PWD_H #ifdef HAVE_PWD_H
pwent = getpwnam(p); pwent = getpwnam(p);
if (pwent == NULL) if (pwent == NULL)
FEerror("Unknown user ~S.", 1, p); FEerror("Unknown user ~S.", 1, user);
namestring = ecl_make_simple_filename(pwent->pw_dir,-1); namestring = ecl_make_simple_filename(pwent->pw_dir,-1);
#endif #endif
FEerror("Unknown user ~S.", 1, p); FEerror("Unknown user ~S.", 1, user);
} else if ((h = ecl_getenv(ecl_fstr("HOME")))) { } else if ((h = ecl_getenv(ecl_fstr("HOME")))) {
namestring = ecl_make_simple_filename(h,-1); namestring = ecl_make_simple_filename(h,-1);
#if defined(ECL_MS_WINDOWS_HOST) #if defined(ECL_MS_WINDOWS_HOST)
@ -1012,7 +1015,7 @@ dir_recursive(cl_object base_dir, cl_object directory, cl_object filemask, int f
* for the file part. * for the file part.
*/ */
if (Null(base_dir)) if (Null(base_dir))
return ECL_NIL; return output;
directory = ECL_CONS_CDR(directory); directory = ECL_CONS_CDR(directory);
goto AGAIN; goto AGAIN;
} }

File diff suppressed because it is too large Load diff

View file

@ -57,6 +57,82 @@ si_system(cl_object cmd_string)
#endif #endif
} }
cl_object
si_getenv(cl_object var)
{
const char *value;
/* Strings have to be null terminated base strings */
var = si_copy_to_simple_base_string(var);
value = getenv((char*)var->base_string.self);
@(return ((value == NULL)? ECL_NIL : ecl_make_simple_base_string(value,-1)));
}
#if defined(HAVE_SETENV) || defined(HAVE_PUTENV)
cl_object
si_setenv(cl_object var, cl_object value)
{
const cl_env_ptr the_env = ecl_process_env();
cl_fixnum ret_val;
/* Strings have to be null terminated base strings */
var = si_copy_to_simple_base_string(var);
if (value == ECL_NIL) {
#ifdef HAVE_SETENV
/* Remove the variable when setting to nil, so that
* (si:setenv "foo" nil), then (si:getenv "foo) returns
* the right thing. */
unsetenv((char*)var->base_string.self);
#else
#if defined(ECL_MS_WINDOWS_HOST)
si_setenv(var, cl_core.null_string);
#else
putenv((char*)var->base_string.self);
#endif
#endif
ret_val = 0;
} else {
#ifdef HAVE_SETENV
value = si_copy_to_simple_base_string(value);
ret_val = setenv((char*)var->base_string.self,
(char*)value->base_string.self, 1);
#else
value = cl_format(4, ECL_NIL, @"~A=~A", var,
value);
value = si_copy_to_simple_base_string(value);
putenv((char*)value->base_string.self);
#endif
}
if (ret_val == -1)
CEerror(ECL_T, "SI:SETENV failed: insufficient space in environment.",
1, ECL_NIL);
ecl_return1(the_env, value);
}
#endif
cl_object
si_environ(void)
{
cl_object output = ECL_NIL;
#ifdef HAVE_ENVIRON
char **p;
for (p = environ; *p; p++) {
output = CONS(ecl_make_constant_base_string(*p,-1), output);
}
output = cl_nreverse(output);
#else
# if defined(ECL_MS_WINDOWS_HOST)
LPTCH p;
for (p = GetEnvironmentStrings(); *p; ) {
output = CONS(ecl_make_constant_base_string(p,-1), output);
do { (void)0; } while (*(p++));
}
output = cl_nreverse(output);
# endif
#endif /* HAVE_ENVIRON */
@(return output);
}
cl_object cl_object
si_getpid(void) si_getpid(void)
{ {

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi.o ;;;; Copyright (c) 1992, Giuseppe Attardi.o
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -4,12 +4,7 @@
;;;; ;;;;
;;;; Copyright (c) 1992, Giuseppe Attardi. ;;;; Copyright (c) 1992, Giuseppe Attardi.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi. ;;;; Copyright (c) 1992, Giuseppe Attardi.
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi. ;;;; Copyright (c) 1992, Giuseppe Attardi.
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; ECoLisp is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -6,12 +6,8 @@
;;;; Copyright (c) 1992, Giuseppe Attardi. ;;;; Copyright (c) 1992, Giuseppe Attardi.
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;; ;;;
;;; conditions.lsp ;;; conditions.lsp
;;; ;;;

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi. ;;;; Copyright (c) 1992, Giuseppe Attardi.
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi. ;;;; Copyright (c) 1992, Giuseppe Attardi.
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -4,12 +4,7 @@
;;;; ;;;;
;;;; Copyright (c) 1992, Giuseppe Attardi. ;;;; Copyright (c) 1992, Giuseppe Attardi.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi.o ;;;; Copyright (c) 1992, Giuseppe Attardi.o
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;; ;;;
;;; COMMON LISP CLASSES HIERARCHY ;;; COMMON LISP CLASSES HIERARCHY

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi. ;;;; Copyright (c) 1992, Giuseppe Attardi.
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi. ;;;; Copyright (c) 1992, Giuseppe Attardi.
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi. ;;;; Copyright (c) 1992, Giuseppe Attardi.
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi. ;;;; Copyright (c) 1992, Giuseppe Attardi.
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(pushnew :cdr-1 *features*) (pushnew :cdr-1 *features*)

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi. ;;;; Copyright (c) 1992, Giuseppe Attardi.
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi. ;;;; Copyright (c) 1992, Giuseppe Attardi.
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi.o ;;;; Copyright (c) 1992, Giuseppe Attardi.o
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi. ;;;; Copyright (c) 1992, Giuseppe Attardi.
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi.o ;;;; Copyright (c) 1992, Giuseppe Attardi.o
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi.o ;;;; Copyright (c) 1992, Giuseppe Attardi.o
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1992, Giuseppe Attardi. ;;;; Copyright (c) 1992, Giuseppe Attardi.
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "CLOS") (in-package "CLOS")

View file

@ -4,13 +4,7 @@
;;;; ;;;;
;;;; Copyright (c) 2004, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2004, Juan Jose Garcia-Ripoll
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; The CLOS IO library.
(in-package "GRAY") (in-package "GRAY")
@ -95,6 +89,11 @@
stream class that is defined, a method must be defined for this stream class that is defined, a method must be defined for this
function, although it is permissible for it to always return NIL.")) function, although it is permissible for it to always return NIL."))
;; Extension from CLASP, CMUCL, SBCL, Mezzano and SICL
(defgeneric stream-line-length (stream)
(:documentation "Return the stream line length or NIL."))
(defgeneric stream-listen (stream) (defgeneric stream-listen (stream)
#+sb-doc #+sb-doc
(:documentation (:documentation
@ -203,6 +202,14 @@
(:documentation (:documentation
"This is like CL:FILE-POSITION, but for Gray streams.")) "This is like CL:FILE-POSITION, but for Gray streams."))
(defgeneric stream-file-length (stream)
(:documentation
"This is like CL:FILE-LENGTH, but for Gray streams."))
(defgeneric stream-file-string-length (stream string)
(:documentation
"This is like CL:FILE-STRING-LENGTH, but for Gray streams."))
(defgeneric stream-file-descriptor (stream &optional direction) (defgeneric stream-file-descriptor (stream &optional direction)
(:documentation (:documentation
"Return the file-descriptor underlaying STREAM, or NIL if not "Return the file-descriptor underlaying STREAM, or NIL if not
@ -218,6 +225,14 @@
error is signaled. That is, users must add methods to explicitly error is signaled. That is, users must add methods to explicitly
decline by returning NIL.")) decline by returning NIL."))
(defgeneric pathname (pathspec)
(:documentation
"Returns the pathname denoted by pathspec."))
(defgeneric truename (pathspec)
(:documentation
"truename tries to find the file indicated by filespec and returns its truename."))
;;; ;;;
;;; Our class hierarchy looks like the one from Gray streams ;;; Our class hierarchy looks like the one from Gray streams
@ -407,6 +422,16 @@
(declare (ignore stream)) (declare (ignore stream))
nil) nil)
;; LINE-LENGTH
(defmethod stream-line-length ((stream fundamental-character-output-stream))
nil)
(defmethod stream-line-length ((stream ansi-stream))
nil)
(defmethod stream-line-length ((stream t))
(bug-or-error stream 'stream-line-length))
;; LISTEN ;; LISTEN
@ -513,9 +538,7 @@
(loop (loop
(let ((ch (stream-read-char stream))) (let ((ch (stream-read-char stream)))
(cond ((eq ch :eof) (cond ((eq ch :eof)
(return (values (if (zerop index) (return (values (si::shrink-vector res index)
nil
(si::shrink-vector res index))
t))) t)))
(t (t
(when (char= ch #\newline) (when (char= ch #\newline)
@ -593,6 +616,22 @@
(declare (ignore stream position)) (declare (ignore stream position))
nil) nil)
;; FILE-LENGTH
(defmethod stream-file-length ((stream ansi-stream))
(file-length stream))
(defmethod stream-file-length ((stream t))
(error 'type-error :datum stream :expected-type 'file-stream))
;; FILE-STRING-LENGTH
(defmethod stream-file-string-length ((stream ansi-stream) string)
(file-string-length stream string))
(defmethod stream-file-string-length ((stream fundamental-character-output-stream) string)
nil)
;; STREAM-P ;; STREAM-P
(defmethod streamp ((stream stream)) (defmethod streamp ((stream stream))
@ -691,7 +730,8 @@
;; TERPRI ;; TERPRI
(defmethod stream-terpri ((stream fundamental-character-output-stream)) (defmethod stream-terpri ((stream fundamental-character-output-stream))
(stream-write-char stream #\Newline)) (stream-write-char stream #\Newline)
nil)
(defmethod stream-terpri ((stream ansi-stream)) (defmethod stream-terpri ((stream ansi-stream))
(cl:terpri stream)) (cl:terpri stream))
@ -741,12 +781,45 @@
(si:file-stream-fd stream)) (si:file-stream-fd stream))
;;; PATHNAME
(defmethod pathname ((pathspec string))
(cl:pathname pathspec))
(defmethod pathname ((pathspec cl:pathname))
pathspec)
(defmethod pathname ((pathspec ansi-stream))
(cl:pathname pathspec))
(defmethod pathname (pathspec)
(error 'type-error :datum pathspec
:expected-type '(or string cl:pathname file-stream)))
;;; TRUENAME
(defmethod truename ((filespec string))
(cl:truename filespec))
(defmethod truename ((filespec cl:pathname))
(cl:truename filespec))
(defmethod truename ((filespec ansi-stream))
(cl:truename filespec))
(defmethod truename (filespec)
(error 'type-error :datum filespec
:expected-type '(or string cl:pathname file-stream)))
;;; Setup ;;; Setup
(eval-when (:compile-toplevel :execute) (eval-when (:compile-toplevel :execute)
(defconstant +conflicting-symbols+ (defconstant +conflicting-symbols+
'(cl:close cl:stream-element-type cl:input-stream-p '(cl:close cl:stream-element-type cl:input-stream-p
cl:open-stream-p cl:output-stream-p cl:streamp))) cl:open-stream-p cl:output-stream-p cl:streamp
cl:pathname cl:truename)))
(let ((p (find-package "GRAY"))) (let ((p (find-package "GRAY")))
(export '(nil) p) (export '(nil) p)
@ -821,7 +894,19 @@ them so."
(%redefine-cl-functions 'cl:file-position (%redefine-cl-functions 'cl:file-position
'gray:stream-file-position 'gray:stream-file-position
gray-package) gray-package)
(%redefine-cl-functions 'cl:file-length
'gray:stream-file-length
gray-package)
(si::package-lock "COMMON-LISP" x) (si::package-lock "COMMON-LISP" x)
(provide '#:gray-streams)
nil)) nil))
(pushnew :gray-streams-module *features*)
(pushnew #'(lambda (module)
(when (string-equal module '#:gray-streams)
(redefine-cl-functions)
t))
sys:*module-provider-functions*)
(setf clos::*clos-booted* t) (setf clos::*clos-booted* t)

View file

@ -6,12 +6,7 @@
;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol ;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "COMPILER") (in-package "COMPILER")

View file

@ -103,7 +103,9 @@ the environment variable TMPDIR to a different value." template))
#+msvc #+msvc
(defun linker-cc (o-pathname object-files &key (defun linker-cc (o-pathname object-files &key
(type :program) (type :program)
(ld-flags (split-program-options *ld-flags*)) (ld-flags (split-program-options (if (eq type :program)
*ld-program-flags*
*ld-flags*)))
(ld-libs (split-program-options *ld-libs*))) (ld-libs (split-program-options *ld-libs*)))
(safe-run-program (safe-run-program
*ld* *ld*
@ -126,7 +128,9 @@ the environment variable TMPDIR to a different value." template))
#-msvc #-msvc
(defun linker-cc (o-pathname object-files &key (defun linker-cc (o-pathname object-files &key
(type :program) (type :program)
(ld-flags (split-program-options *ld-flags*)) (ld-flags (split-program-options (if (eq type :program)
*ld-program-flags*
*ld-flags*)))
(ld-libs (split-program-options *ld-libs*))) (ld-libs (split-program-options *ld-libs*)))
(declare (ignore type)) (declare (ignore type))
(safe-run-program (safe-run-program

View file

@ -4,12 +4,8 @@
;;;; ;;;;
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll. ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
;;;; CMPC-WT -- Routines for writing code to C files. ;;;; CMPC-WT -- Routines for writing code to C files.
;;;; ;;;;

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya. ;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
;;;; Copyright (c) 1990, Giuseppe Attardi. ;;;; Copyright (c) 1990, Giuseppe Attardi.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; CMPWT Output routines. ;;;; CMPWT Output routines.

View file

@ -6,12 +6,7 @@
;;;; Copyright (c) 2003, Juan Jose Garcia-Ripoll. ;;;; Copyright (c) 2003, Juan Jose Garcia-Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "COMPILER") (in-package "COMPILER")

View file

@ -4,12 +4,7 @@
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; Copyright (c) 2021, Daniel Kochmański ;;;; Copyright (c) 2021, Daniel Kochmański
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
(in-package #:compiler) (in-package #:compiler)

View file

@ -4,13 +4,7 @@
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; Copyright (c) 2021, Daniel Kochmański ;;;; Copyright (c) 2021, Daniel Kochmański
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;;
(in-package #:compiler) (in-package #:compiler)

View file

@ -4,12 +4,7 @@
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; Copyright (c) 2021, Daniel Kochmański ;;;; Copyright (c) 2021, Daniel Kochmański
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
(in-package #:compiler) (in-package #:compiler)

View file

@ -6,12 +6,7 @@
;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol ;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "COMPILER") (in-package "COMPILER")

View file

@ -4,12 +4,7 @@
;;;; ;;;;
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; CMPDEF -- Definitions created at compile / configuration time ;;;; CMPDEF -- Definitions created at compile / configuration time
@ -62,6 +57,7 @@ coprocessor).")
(defvar *ld-shared-flags* "@SHARED_LDFLAGS@ @LDFLAGS@") (defvar *ld-shared-flags* "@SHARED_LDFLAGS@ @LDFLAGS@")
#+dlopen #+dlopen
(defvar *ld-bundle-flags* "@BUNDLE_LDFLAGS@ @LDFLAGS@") (defvar *ld-bundle-flags* "@BUNDLE_LDFLAGS@ @LDFLAGS@")
(defvar *ld-program-flags* "@PROGRAM_LDFLAGS@ @LDFLAGS@")
(defvar +shared-library-prefix+ "@SHAREDPREFIX@") (defvar +shared-library-prefix+ "@SHAREDPREFIX@")
(defvar +shared-library-extension+ "@SHAREDEXT@") (defvar +shared-library-extension+ "@SHAREDEXT@")

View file

@ -4,12 +4,8 @@
;;;; ;;;;
;;;; Copyright (c) 2009, Juan Jose Garcia-Ripoll. ;;;; Copyright (c) 2009, Juan Jose Garcia-Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
;;;; CMPENVAPI -- API for creating and manipulating environments ;;;; CMPENVAPI -- API for creating and manipulating environments
;;;; ;;;;

View file

@ -6,13 +6,9 @@
;;;; Copyright (c) 1990, Giuseppe Attardi. ;;;; Copyright (c) 1990, Giuseppe Attardi.
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
;;;; CMPENV-DECLAIM -- Proclamations local to the current file ;;;; CMPENV-DECLAIM -- Proclamations local to the current file
;;;; ;;;;
;;;; One implementation of DECLAIM that uses the compiler environment ;;;; One implementation of DECLAIM that uses the compiler environment

View file

@ -4,12 +4,8 @@
;;;; ;;;;
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
;;;; CMPENV-DECLARE -- Declarations for the compiler ;;;; CMPENV-DECLARE -- Declarations for the compiler
;;;; ;;;;

View file

@ -4,12 +4,9 @@
;;;; ;;;;
;;;; Copyright (c) 2009, Juan Jose Garcia-Ripoll. ;;;; Copyright (c) 2009, Juan Jose Garcia-Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;; ;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
;;;; CMPENV-FUN -- Declarations concerning function types and inlining ;;;; CMPENV-FUN -- Declarations concerning function types and inlining
;;;; ;;;;

View file

@ -6,12 +6,8 @@
;;;; Copyright (c) 1990, Giuseppe Attardi. ;;;; Copyright (c) 1990, Giuseppe Attardi.
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
;;;; CMPENV-PROCLAIM -- Proclamations for the compiler ;;;; CMPENV-PROCLAIM -- Proclamations for the compiler
;;;; ;;;;

View file

@ -4,12 +4,8 @@
;;;; ;;;;
;;;; Copyright (c) 2009, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2009, Juan Jose Garcia-Ripoll
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
;;;; CMPFORM -- Internal representation of Lisp forms ;;;; CMPFORM -- Internal representation of Lisp forms
;;;; ;;;;

View file

@ -4,12 +4,7 @@
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; Copyright (c) 2021, Daniel Kochmański ;;;; Copyright (c) 2021, Daniel Kochmański
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
(in-package #:compiler) (in-package #:compiler)

View file

@ -4,12 +4,8 @@
;;;; ;;;;
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
;;;; CMPGLOBALS -- Global variables and flag definitions ;;;; CMPGLOBALS -- Global variables and flag definitions
;;;; ;;;;

View file

@ -7,12 +7,7 @@
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll ;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll
;;;; Copyright (c) 2015, Daniel Kochmański ;;;; Copyright (c) 2015, Daniel Kochmański
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; CMPMAIN Compiler main program. ;;;; CMPMAIN Compiler main program.
@ -25,6 +20,7 @@
(type nil type-supplied-p) (type nil type-supplied-p)
(system-p nil) (system-p nil)
&allow-other-keys) &allow-other-keys)
(setf name (pathname name))
(let* ((format '()) (let* ((format '())
(extension '())) (extension '()))
(unless type-supplied-p (unless type-supplied-p

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya. ;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
;;;; Copyright (c) 1990, Giuseppe Attardi. ;;;; Copyright (c) 1990, Giuseppe Attardi.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; CMPMAP Map functions. ;;;; CMPMAP Map functions.

View file

@ -4,12 +4,7 @@
;;;; ;;;;
;;;; Copyright (c) 2007, Juan Jose Garcia Ripoll. ;;;; Copyright (c) 2007, Juan Jose Garcia Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; CMPNAME Unambiguous init names for object files ;;;; CMPNAME Unambiguous init names for object files
;;;; ;;;;

View file

@ -6,12 +6,7 @@
;;;; Copyright (c) 2010. Juan Jose Garcia-Ripol ;;;; Copyright (c) 2010. Juan Jose Garcia-Ripol
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "COMPILER") (in-package "COMPILER")

View file

@ -4,12 +4,8 @@
;;;; ;;;;
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll. ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
;;;; CMPOPT-CONSTANTS Constant expressions. ;;;; CMPOPT-CONSTANTS Constant expressions.
;;;; ;;;;

View file

@ -6,12 +6,7 @@
;;;; ;;;;
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "COMPILER") (in-package "COMPILER")

View file

@ -4,12 +4,7 @@
;;;; ;;;;
;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol ;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
;;;; CMPOPT-TYPE -- Optimizations for selected types of expresions ;;;; CMPOPT-TYPE -- Optimizations for selected types of expresions
;;;; ;;;;

View file

@ -6,12 +6,7 @@
;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol ;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "COMPILER") (in-package "COMPILER")

View file

@ -4,12 +4,7 @@
;;;; ;;;;
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; CMPFEATURES.LSP -- Gather a list of features from the compiler ;;;; CMPFEATURES.LSP -- Gather a list of features from the compiler

View file

@ -4,12 +4,7 @@
;;;; ;;;;
;;;; Copyright (c) 2010, Juan Jose Garcia Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia Ripoll
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; CMPOS-RUN Executing auxiliary programs ;;;; CMPOS-RUN Executing auxiliary programs

View file

@ -4,12 +4,7 @@
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; Copyright (c) 2021, Daniel Kochmański ;;;; Copyright (c) 2021, Daniel Kochmański
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
(in-package #:compiler) (in-package #:compiler)

View file

@ -4,12 +4,8 @@
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; Copyright (c) 2021, Daniel Kochmański ;;;; Copyright (c) 2021, Daniel Kochmański
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
;;;; CMPDATA Data segment. ;;;; CMPDATA Data segment.
;;;; ;;;;

View file

@ -4,12 +4,7 @@
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; Copyright (c) 2021, Daniel Kochmański ;;;; Copyright (c) 2021, Daniel Kochmański
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
(in-package #:compiler) (in-package #:compiler)

View file

@ -4,12 +4,7 @@
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; Copyright (c) 2021, Daniel Kochmański ;;;; Copyright (c) 2021, Daniel Kochmański
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
(in-package #:compiler) (in-package #:compiler)

View file

@ -4,12 +4,7 @@
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; Copyright (c) 2021, Daniel Kochmański ;;;; Copyright (c) 2021, Daniel Kochmański
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
(in-package #:compiler) (in-package #:compiler)

View file

@ -4,12 +4,7 @@
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; Copyright (c) 2021, Daniel Kochmański ;;;; Copyright (c) 2021, Daniel Kochmański
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
(in-package #:compiler) (in-package #:compiler)

View file

@ -4,12 +4,7 @@
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; Copyright (c) 2021, Daniel Kochmański ;;;; Copyright (c) 2021, Daniel Kochmański
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
(in-package #:compiler) (in-package #:compiler)

View file

@ -4,12 +4,7 @@
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; Copyright (c) 2021, Daniel Kochmański ;;;; Copyright (c) 2021, Daniel Kochmański
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
(in-package #:compiler) (in-package #:compiler)

View file

@ -6,12 +6,7 @@
;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol ;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "COMPILER") (in-package "COMPILER")

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya. ;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
;;;; Copyright (c) 1990, Giuseppe Attardi. ;;;; Copyright (c) 1990, Giuseppe Attardi.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; CMPTYPE-ARITH -- Operations upon and among types ;;;; CMPTYPE-ARITH -- Operations upon and among types

View file

@ -4,12 +4,7 @@
;;;; ;;;;
;;;; Copyright (c) 2011, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2011, Juan Jose Garcia-Ripoll
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; CMPTYPE-ASSERT Type assertions automatically generated ;;;; CMPTYPE-ASSERT Type assertions automatically generated

View file

@ -4,12 +4,8 @@
;;;; ;;;;
;;;; Copyright (c) 2009, Juan Jose Garcia-Ripoll. ;;;; Copyright (c) 2009, Juan Jose Garcia-Ripoll.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
;;;; CMPTYPE-PROP -- Type propagation basic routines and database ;;;; CMPTYPE-PROP -- Type propagation basic routines and database
;;;; ;;;;

View file

@ -5,12 +5,7 @@
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya. ;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
;;;; Copyright (c) 1990, Giuseppe Attardi. ;;;; Copyright (c) 1990, Giuseppe Attardi.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; CMPTYPE Type information. ;;;; CMPTYPE Type information.

View file

@ -4,12 +4,8 @@
;;;; ;;;;
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
;;;; CMPTYPES -- Data types for the Lisp core structures ;;;; CMPTYPES -- Data types for the Lisp core structures
;;;; ;;;;

View file

@ -7,12 +7,7 @@
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya. ;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
;;;; Copyright (c) 1990, Giuseppe Attardi. ;;;; Copyright (c) 1990, Giuseppe Attardi.
;;;; ;;;;
;;;; ECoLisp is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
(in-package "COMPILER") (in-package "COMPILER")

View file

@ -4,12 +4,7 @@
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll ;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
;;;; Copyright (c) 2021, Daniel Kochmański ;;;; Copyright (c) 2021, Daniel Kochmański
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or ;;;; See file 'LICENSE' for the copyright details.
;;;; modify it under the terms of the GNU Library General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 2 of the License, or (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; ;;;;
(in-package #:compiler) (in-package #:compiler)

View file

@ -95,7 +95,9 @@
c::*ld-shared-flags* c::*ld-shared-flags*
"@SHARED_LDFLAGS@ @LDFLAGS@" "@SHARED_LDFLAGS@ @LDFLAGS@"
c::*ld-bundle-flags* c::*ld-bundle-flags*
"@BUNDLE_LDFLAGS@ @LDFLAGS@") "@BUNDLE_LDFLAGS@ @LDFLAGS@"
c::*ld-program-flags*
"@PROGRAM_LDFLAGS@ @LDFLAGS@")
;;; FIXME: The nonstop platform does not support soname ;;; FIXME: The nonstop platform does not support soname
#+(and :wants-dlopen nonstop) #+(and :wants-dlopen nonstop)
(setf c::*ld-libs* (setf c::*ld-libs*
@ -182,7 +184,7 @@
(push "@LIBPREFIX@eclgmp.@LIBEXT@" extra-args))) (push "@LIBPREFIX@eclgmp.@LIBEXT@" extra-args)))
(print extra-args) (print extra-args)
(c::shared-cc (compile-file-pathname "ecl" :type :dll) (c::shared-cc (compile-file-pathname "ecl" :type :dll)
(list* "c/main.@OBJEXT@" (list* #-emscripten "c/main.@OBJEXT@"
"c/all_symbols2.@OBJEXT@" "c/all_symbols2.@OBJEXT@"
"@LIBPREFIX@lsp.@LIBEXT@" "@LIBPREFIX@lsp.@LIBEXT@"
"@LIBPREFIX@eclmin.@LIBEXT@" "@LIBPREFIX@eclmin.@LIBEXT@"

2150
src/configure vendored

File diff suppressed because it is too large Load diff

View file

@ -8,7 +8,7 @@ dnl AUTOCONF configuration for ECL
dnl Giuseppe Attardi 25.1.1994 dnl Giuseppe Attardi 25.1.1994
dnl dnl
AC_INIT([ecl],[23.9.9],[]) AC_INIT([ecl],[24.5.10],[])
AC_REVISION([$Revision$]) AC_REVISION([$Revision$])
AC_CONFIG_SRCDIR([bare.lsp.in]) AC_CONFIG_SRCDIR([bare.lsp.in])
AC_CONFIG_AUX_DIR([gmp]) AC_CONFIG_AUX_DIR([gmp])
@ -317,6 +317,7 @@ AC_SUBST(CORE_LIBS, []) dnl Locally compiled libs to link into
dnl ecl/ecl_min/libecl.so and nowhere else. dnl ecl/ecl_min/libecl.so and nowhere else.
AC_SUBST(SHARED_LDFLAGS) dnl Flags for shared libraries linker AC_SUBST(SHARED_LDFLAGS) dnl Flags for shared libraries linker
AC_SUBST(BUNDLE_LDFLAGS) dnl Flags for FASL files linker AC_SUBST(BUNDLE_LDFLAGS) dnl Flags for FASL files linker
AC_SUBST(PROGRAM_LDFLAGS) dnl Flags for executable program linker
AC_SUBST(EXTRA_OBJS) dnl Extra *.o files to be compiled into libecl.a AC_SUBST(EXTRA_OBJS) dnl Extra *.o files to be compiled into libecl.a
AC_SUBST(TARGETS, ['bin/ecl$(EXE)'])dnl Versions of ECL to be built AC_SUBST(TARGETS, ['bin/ecl$(EXE)'])dnl Versions of ECL to be built
AC_SUBST(SUBDIRS, ['c doc']) dnl Subdirectories that make should process AC_SUBST(SUBDIRS, ['c doc']) dnl Subdirectories that make should process

View file

@ -181,10 +181,19 @@ to official gitlab repository:
. .
.SH LICENSE .SH LICENSE
ECL is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version; see file \fICOPYING\fP.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.
You should have received a copy of the GNU Library General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. This library is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free
Software Foundation; either version 2.1 of the License, or (at your option) any
later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with this library; if not, write to the Free Software Foundation, Inc., 51
Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Please report bugs, comments, suggestions to the ecl mailing list: Please report bugs, comments, suggestions to the ecl mailing list:
.MT ecl-devel@common-lisp.net .MT ecl-devel@common-lisp.net

View file

@ -4,12 +4,7 @@
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya. ;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
;;;; Copyright (c) 1990, Giuseppe Attardi. ;;;; Copyright (c) 1990, Giuseppe Attardi.
;;;; ;;;;
;;;; This program is free software; you can redistribute it and/or modify ;;;; See file 'LICENSE' for the copyright details.
;;;; it under the terms of the GNU General Public License as published by
;;;; the Free Software Foundation; either version 2 of the License, or
;;;; (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; setdoc.lsp ;;;; setdoc.lsp
;;;; ;;;;

View file

@ -302,12 +302,15 @@ format. In case of @emph{Portable FASL} the bytecodes compiler is needed.
@node Compiling with ASDF @node Compiling with ASDF
@subsection Compiling with ASDF @subsection Compiling with ASDF
First, let's disregard the simple situation in which we write Lisp For larger systems involving more complex file dependencies, or for systems
without depending on any other Lisp libraries. A more practical example that are portable across different Common Lisp implementations, it may be
is to build a library that depends on other better to define systems using @uref{https://common-lisp.net/project/asdf/,asdf}.
@uref{https://common-lisp.net/project/asdf/,asdf}, systems. ECL provides
a useful extension for asdf called @code{asdf:make-build}, which offers ECL provides a useful extension for asdf called @code{asdf:make-build}, which
an abstraction for building libraries directly from system definitions. offers an abstraction for building libraries directly from system definitions.
Note that this extension is only available in the ASDF that is shipped with
ECL; it may not be available from an ASDF installed from the system or from
Quicklisp.
To download dependencies you may use To download dependencies you may use
@uref{https://www.quicklisp.org,Quicklisp} to load your system (with @uref{https://www.quicklisp.org,Quicklisp} to load your system (with
@ -328,14 +331,22 @@ the fact that other libraries may be loaded).
@node Example code to build @node Example code to build
@subsubsection Example code to build @subsubsection Example code to build
We use a simple project that depends on @code{alexandria} to An example project is included in the ECL source distribution in the
demonstrate the interface. The example consists of @code{examples/asdf_with_dependence/} directory.
@code{example-with-dep.asd}, @code{package.lisp} and
@code{example.lisp} (included in the This project depends on the @code{alexandria} library and consists of a system
@code{examples/asdf_with_dependence/} directory in the ECL source definition (@code{example-with-dep.asd}), package definition
tree). Before any kind of build you need to push the full path of (@code{package.lisp}), and the actual library code (@code{example.lisp}).
this directory to @code{asdf:*central-registry*} (or link it in a
location already recognized by ASDF). Before following the steps below, you must
@uref{https://asdf.common-lisp.dev/asdf/Configuring-ASDF-to-find-your-systems.html,configure ASDF to find your systems}.
You can either copy or symlink the example directory in one of the standard
ASDF locations, or push the path of the example directory to your
@code{asdf:*central-registry*}, for example:
@lisp
(push "./" asdf:*central-registry*)
@end lisp
@node Build it as an single executable @node Build it as an single executable
@subsubsection Build it as an single executable @subsubsection Build it as an single executable

View file

@ -196,9 +196,15 @@ This function returns a C pointer for the given Lisp foreign object. Lisp
foreign objects are constructed with functions @code{ecl_make_foreign_data} foreign objects are constructed with functions @code{ecl_make_foreign_data}
and @code{ecl_allocate_foreign_data}. and @code{ecl_allocate_foreign_data}.
This data is a subject of the garbage collection (unlike lisp functions like The wrapper created with @code{ecl_make_foreign_data} is a subject of
@code{si:allocate-foreign-object}). This is because the data producer here is garbage collection, but the pointer itself is not ``freed'', because
the "C world" and the data consumer is the "Lisp world". the data producer is ``C world'' and the consumer is ``Lisp world''.
This is different from @code{si:allocate-foreign-object} where the
data producer is ``Lisp world'' and the consumer is ``C world''. In
that case the wrapper is not collected unless explicitly released with
@code{si:free-foreign-object} in which case the allocated foreign data
is also released.
@end deftypefun @end deftypefun
@cppdef ecl_base_string_pointer_safe @cppdef ecl_base_string_pointer_safe

View file

@ -1,9 +1,61 @@
@node Gray streams @node Gray Streams
@section Gray streams @section Gray Streams
@defun{close} {@var{stream} @keys{} :abort} @defun {close} stream &key abort
Unlike the other Gray stream functions, @code{close} is not specialized
Unlike the other Gray stream functions, @code{close} is not on @code{t} for @var{stream}. This decision has been taken mainly for
specialized on @code{t} for @var{stream}. This decision has been taken the compatibility reasons with some libraries.
mainly for the compatibility reasons with some libraries. @end defun
@defun {stream-file-position} stream &optional position
This is used to implement @code{file-position}. When @code{position}
is not provided it should return the current file position of the
stream as non-negative integer or @code{nil} if the file position
cannot be determined. When @code{position} is supplied the file
position of the stream should be set to that value. If setting the
position is successful then @code{t} should be returned, otherwise
@code{nil} should be returned. The default method always returns
@code{nil}.
@end defun
@defun {stream-file-length} stream
This is used to implement @code{file-length}. It returns either a
non-negative integer or @code{nil} if the concept of file length is
not meaningful for the stream. The default method will signal a
@code{type-error} with an expected type of @code{file-stream}. This is
required to conform with the ``Exceptional Situations'' section of
@code{file-length} in the ANSI specification.
@end defun
@defun {stream-interactive-p} stream
This is used to implement @code{interactive-stream-p}. It returns a
boolean indicating if the stream is interactive. The default method
always returns @code{nil}.
@end defun
@defun {stream-line-length} stream
Allows the default line length to be specified for the stream. It
returns either a non-negative integer or @code{nil} if the concept of
line length is not meaningful for the stream. This value is only used
if @code{*print-right-margin*} is @code{nil}. The line length is used
by the pretty printer and by the format justification directive. The
default method returns @code{nil}.
@end defun
@defun {stream-read-sequence} stream sequence &optional start end
This is used to implement @code{read-sequence}. It should follow the
semantics in the ANSI specification. It returns the position of the
first element in the sequence that was not updated. The default method
calls @code{stream-read-char} or @code{stream-read-byte} repeatedly
based on the type returned by @code{stream-element-type}. Element
access to the sequence is done via @code{elt}.
@end defun
@defun {stream-write-sequence} stream sequence &optional start end
This is used to implement @code{write-sequence}. It should follow the
semantics in the ANSI specification. It returns sequence without
modification. The default method calls @code{stream-write-char} or
@code{stream-write-byte} repeatedly based on the type returned by
@code{stream-element-type}. Element access to the sequence is done via
@code{elt}.
@end defun @end defun

View file

@ -53,8 +53,7 @@
@c @node Extensible Sequences @c @node Extensible Sequences
@c @section Extensible Sequences @c @section Extensible Sequences
@node Gray Streams @include extensions/gray-streams.txi
@section Gray Streams
@c @node Series @c @node Series
@c @section Series @c @section Series

View file

@ -10,43 +10,43 @@ notice which is shipped with ECL.
@verbatim @verbatim
---- BEGINNING OF COPYRIGHT FOR THE ECL CORE ENVIRONMENT ------------ ---- BEGINNING OF COPYRIGHT FOR THE ECL CORE ENVIRONMENT ------------
Copyright (C) 2019, Daniel Kochmanski and Marius Gerbershagen Copyright (c) 2019-2024 Daniel Kochmański and Marius Gerbershagen
Copyright (c) 2018, Daniel Kochmański Copyright (c) 2015-2018, Daniel Kochmański
Copyright (c) 2013, Juan Jose Garcia Ripoll Copyright (c) 2000-2013, Juan Jose Garcia Ripoll
Copyright (c) 1990, 1991, 1993 Giuseppe Attardi Copyright (c) 1990, 1991, 1993 Giuseppe Attardi
Copyright (c) 1984 Taiichi Yuasa and Masami Hagiya Copyright (c) 1984 Taiichi Yuasa and Masami Hagiya
All Rights Reserved All Rights Reserved
ECL is free software; you can redistribute it and/or modify it ECL is free software; you can redistribute it and/or
under the terms of the GNU Library General Public License as published modify it under the terms of the GNU Lesser General Public
by the Free Software Foundation; either version 2 of the License, or License as published by the Free Software Foundation; either
(at your option) any later version; see file 'Copying'. version 2.1 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
GNU Library General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Library General Public License You should have received a copy of the GNU Lesser General Public
along with this program; if not, write to the Free Software License along with this library; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
PLEASE NOTE THAT: PLEASE NOTE THAT:
This license covers all of the ECL program except for the files This license covers all of the ECL program except for the files
src/lsp/loop2.lsp ; Symbolic's LOOP macro src/lsp/loop.lsp ; Symbolic's LOOP macro
src/lsp/pprint.lsp ; CMUCL's pretty printer src/lsp/pprint.lsp ; CMUCL's pretty printer
src/lsp/format.lsp ; CMUCL's format src/lsp/format.lsp ; CMUCL's format
and the directories and the directories
contrib/ ; User contributed extensions contrib/ ; User contributed extensions
examples/ ; Examples for the ECL usage examples/ ; Examples for the ECL usage
Look the precise copyright of these extensions in the corresponding Look the precise copyright of these extensions in the corresponding
files. files.
Examples are licensed under: (SPDX-License-Identifier) BSD-2-Clause Examples are licensed under: (SPDX-License-Identifier) BSD-2-Clause
Report bugs, comments, suggestions to the ecl mailing list: Report bugs, comments, suggestions to the ecl mailing list:
ecl-devel@common-lisp.net. ecl-devel@common-lisp.net.
---- END OF COPYRIGHT FOR THE ECL CORE ENVIRONMENT ------------------ ---- END OF COPYRIGHT FOR THE ECL CORE ENVIRONMENT ------------------
@end verbatim @end verbatim

Some files were not shown because too many files have changed in this diff Show more