Commit 4c3dcfdb authored by Daniel Kochmański's avatar Daniel Kochmański
Browse files

Merge branch 'rc-16.1.3'

parents 43240e52 f2f49389
Loading
Loading
Loading
Loading
+51 −1
Changes for .gitignore: 51 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -39,10 +39,60 @@ msvc/lsp/*.[ch]

BUILD-STAMP
MODULES
Makefile
/Makefile

src/autom4te.cache
src/config.log

regressions/*.lsp
regressions/eformat-tests/*.txt
*.aux
*.cp*
*.fn*
*.log
/src/doc/new-doc/*.lsp*
*.toc
*.tp*
*.vr*
/src/doc/new-doc/new-doc.pdf
/src/doc/new-doc/ecldoc.info
/src/doc/new-doc/new-doc.ex
/src/doc/new-doc/new-doc.exs
/src/doc/new-doc/new-doc.ft
/src/doc/new-doc/new-doc.fts
/src/doc/new-doc/new-doc.cf
/src/doc/new-doc/new-doc.cfs
/examples/ecl_qt/qt/ecl_qtdemo
/examples/ecl_qt/hello-lisp-system--all-systems.fasb
/examples/ecl_qt/lisp-envi.a
/examples/ecl_qt/qt/.qmake.stash
/examples/ecl_qt/qt/Makefile
*fasc
*.orig

# msvc
/msvc/encodings/
/msvc/ecl/atomic_ops/
/msvc/ecl/impl/
/msvc/ecl/*.h
/msvc/clos/
/msvc/cmp.asd
/msvc/cmp/
/msvc/deflate.asd
/msvc/defsystem.asd
/msvc/ecl-cdb.asd
/msvc/ecl-curl.asd
/msvc/ecl-help.asd
/msvc/ecl-quicklisp.asd
/msvc/ecl.ico
/msvc/ecl.rc
/msvc/ecl.res
/msvc/ext/
/msvc/lsp/
/msvc/package/
/msvc/prebuilt-asdf.asd
/msvc/profile.asd
/msvc/ql-minitar.asd
/msvc/rt.asd
/msvc/sb-bsd-sockets.asd
/msvc/sockets.asd
+158 −2
Changes for CHANGELOG: 158 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -23,11 +23,167 @@
    have a C compiler accessible to ECL, you may use
    (ext:install-c-compiler) to switch back to the Lisp-to-C compiler.

  - Before issuing make check on the package package developer has to
  - Before issuing =make check= on the package package developer has to
    install ECL on the preferred destination (specified with "--prefix"
    parameter given to configure script).

* Pending changes since 16.1.2
* Pending changes since 16.1.3
* 16.1.3 changes since 16.1.2
** Announcement
Dear Community,

After almost a year of development we are proud to present a new release of
ECL tagged with version =16.1.3=. All changes are backward compatible
fixing bugs and other issues, implementing new interfaces and cleaning up
the code base.

ECL manual has been updated in a few places. Work on a new documentation is
still pending. It is still incomplete, but you may check see it here:
https://common-lisp.net/project/ecl/static/ecldoc/.

Before this release we have performed extensive tests on various platforms
(Linux, FreeBSD, OpenBSD, NetBSD, OSX, Windows MSVC, Windows MinGW, Windows
Cygwin, Android and Haiku). For details please consult
https://gitlab.com/embeddable-common-lisp/ecl/issues/307. Extra attention
has been paid to Windows testing to improve that platform support.

Best regards,
ECL Development Team

** API changes
- Added better interface for package-locks
Introduced functions:
=ext:package-locked-p package=
=ext:lock-package package=
=ext:unlock-package package=
=ext:without-package-locks=
=ext:with-unlocked-package=

To use these functions user has to require the module
#+BEGIN_SRC lisp
  (require '#:package-locks)
#+END_SRC

=defpackage= accepts new option =lock= to allow locking package on
creation:

#+BEGIN_SRC lisp
  (defpackage foo (:lock t))
#+END_SRC

- mp:holding-lock-p: introduce new function for multiprocessing.
Function verifies if lock is hold by the thread which calls the
function. Usage: =(mp:holding-lock-p my-lock)=.

- make-random-state: fix problem with simple-vectors
The correct initialization types for =make-random-state= are:
=(OR RANDOM-STATE FIXNUM (MEMBER T NIL))=.

Initializing a random state with an appropriate array (element type and
arity dependent on platform) is also possible.

- ext:random-state-array: new extension for random-states. Usage:
=(ext:random-state-array random-state)=.

- ext:terminate-process: new extension for external processes. Usage:
=(ext:terminate-process process)= with a second, optional boolean argument
whenever termination should be forced or not.

** Enhancements
- Implemented CDR-7
https://common-lisp.net/project/cdr/document/7/index.html

- Implemented CDRs: CDR-1, CDR-5, CDR-14
Both CDR-1 and CDR-5 were already implemented, CDR-14 made us to list them
in =*features*=
(https://common-lisp.net/project/cdr/document/14/index.html).

- if ECL is build with =--with-cxx= option, =:CXX-CORE= is present in
  =*features*=.

- deprecated configure option =--with-local-gmp= has been removed - use
  =--enable-gmp= (defaults to auto).

- configure options has been revised.

- ASDF has been upgraded to version 3.1.7.26 (with a few patches scheduled
  for 3.2.0).

- Bundled CLX has been purged
Lately I've fixed ECL support on portable CLX maintained by sharplispers on
https://github.com/sharplispers/clx (available via QuickLisp).

- Initial port for the Haiku platform
The port is done by Kacper Kasper's work, one of Haiku developers. Threads
are not supported yet.

- Refactored ECL internal tests framework
Tests in =src/tests= are now asdf-loadable (with =load-source-op=) and
divided into test suites. =make check= target runs all regression and
feature tests which aren't supposed to fail.

- Removed 15000 lines of obsolete code
Files not included in the buildsystem but lingering in the codebase or
options failing to build. All info is added in the new documentation in the
section "Removed interfaces".

- Improved man page and help output.
Man page now contains up-to-date list of flags, as well as explanation of
flag's behavior.

- Deprecated long flags with one dash, added two-dash version
Flags that aren't one-character, but start with one dash (e.g. =-eval=) are
now deprecated; long version =--eval= was added instead.

- Indented C/C++ code to follow emacs's gnu C style
This is a first step towards coding standards in the
documentation. Additionally all in the src/c/ directory are listed in the
appropraite documentation section (new-doc).

- Refactored =list_current_directory in unixfsys.d=
Function was obfuscated with ifdefs with non-even pairs of =#\{= and =#\}=.

** Issues fixed
- ECL signals floating point exceptions in top-level console.

- =mp:rwlock= is treated as built-in class (previously process crashed if
  =class-of= was called on such object).

- ECL builds now succesfully with `--with-ieee-fp=no' option

- ext:file-stream-fd
Doesn't cause an internal-error if fed with not a file-stream (signals a
SIMPLE-TYPE-ERROR condtition).

- stable-sort bugfix and improvement in speed
Adapted from SBCL by Diogo Franco.

- typep: accept * type specifier as abbreviation of t as described in
'2.4.3 Type Specifiers' of the specification.

- MOP: fix problemes when redefining non-standard and anonymous classes
Bugs identified and fixed by Pascal Costanza.

- getcwd: fix issue with too long pathname
This fixes the regression, which crashed ECL at start when pathname
exceeded 128 characters limit.

- make-random-state: fix problem with simple-vectors
Until now #$ reader macro accepted simple vectors as an argument, what lead
to bugs if vector didn't match specific requirements like the element type
or the arity. Now we sanitize this.

- make-load-form: provide implementation for random-state objects

- thread fix on msvc: on windows importing thread was closing the thread
handler so the thread wakeup wasn't working because the handler is not more valid.

- import thread wasn't set upping a proper environment: on some case
the thread was mistakenly thinking that the thread was already registered.

- ECL_HANDLER_CASE and ECL_RESTART_CASE didn't work as expected
Bug identified and fixed by Vadim Penzin.

* 16.1.2 changes since 16.0.0

** API changes
+0 −0

File moved.

+26 −23
Changes for INSTALL: 26 added lines, 23 removed lines.
Original line number Diff line number Diff line
@@ -13,8 +13,8 @@ If you do not have access to the online version, follow the following recipies.

* Windows with Visual Studio C++ 2008
1. Enter the msvc directory
  2. Read the file Makefile to find the configuration options. They typically have the
     form ECL_UNICODE=1, ECL_THREADS=1, etc
2. Read the file Makefile to find the configuration options. They
   typically have the form ECL_UNICODE=1, ECL_THREADS=1, etc
3. Enter
   nmake ...
   followed by zero or more of those options
@@ -25,38 +25,41 @@ If you do not have access to the online version, follow the following recipies.
1. Build the host ECL
   #+BEGIN_SRC shell-script
     ./configure ABI=32 CFLAGS="-m32 -g -O2" LDFLAGS="-m32 -g -O2"\
            --prefix=`pwd`/ecl-android-host \
            --disable-longdouble \
            --enable-libatomic=included
                 --prefix=`pwd`/ecl-android-host --disable-longdouble
     make -j9
     make install
     rm -r build
     export ECL_TO_RUN=`pwd`/ecl-android-host/bin/ecl
   #+END_SRC
  2. Build the toolchain (requires android-ndk) and export the
     necessary paths - if you have a toolchain for the android just
     export it's bin/ directory
2. Configure the toolchain (requires android-ndk) and export the
   necessary paths:
   #+BEGIN_SRC shell-script
       export PLATFORM_PREFIX=/opt/toolchains/android-ndk/
       export NDK_PATH=/opt/android-ndk/
       export NDK_PLATFORM=android-4

       mkdir ${PLATFORM_PREFIX}
       ${NDK_PATH}/build/tools/make-standalone-toolchain.sh \
                  --platform=${NDK_PLATFORM} \
                  --install-dir=${PLATFORM_PREFIX} \
                  --arch=arm

       export PATH=${PLATFORM_PREFIX}/bin:${PATH}
     # android-ndk r13b is known to be broken, tested with r9b available at:
     # http://dl.google.com/android/ndk/android-ndk-r9b-linux-x86_64.tar.bz2
     # http://dl.google.com/android/ndk/android-ndk-r9b-darwin-x86_64.tar.bz2
     export NDK_PATH=/opt/android-ndk
     export SYSROOT=${NDK_PATH}/platforms/android-9/arch-arm
     export PATH=${NDK_PATH}/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin:$PATH
  #+END_SRC
3. Build and install the target library
   #+BEGIN_SRC shell-script
     export LDFLAGS="--sysroot=${SYSROOT}"
     export CPPFLAGS="--sysroot=${SYSROOT}"
     ./configure --host=arm-linux-androideabi \
                 --prefix=`pwd`/ecl-android \
                   --with-cross-config=`pwd`src/util/android.cross_config \
                   --disable-soname
                 --with-cross-config=`pwd`/src/util/android.cross_config
     make -j9
     make install
   #+END_SRC
  4. Library and assets in the ecl-android directory are ready to run
     on the Android system.
4. Library and assets in the ecl-android directory are ready to run on
   the Android system.

** Building ecl-android on Darwin (OSX)
If your host platform is darwin, then the host compiler should be
built with the Apple's GCC (not the GCC from Macports). Using the
MacPort command:
#+BEGIN_SRC shell-script
  sudo port select --set gcc none
#+END_SRC
   
Hint provided by Pascal J. Bourguignon.
+1 −2
Changes for LICENSE: 1 added line, 2 removed lines.
Original line number Diff line number Diff line
@@ -23,13 +23,12 @@
  PLEASE NOTE THAT:

  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/format.lsp	; CMUCL's format
  and the directories
	contrib/		; User contributed extensions
        examples/               ; Examples for the ECL usage
	src/clx/		; portable CLX library from Telent
  Look the precise copyright of these extensions in the corresponding
  files.

Loading