Commit graph

6694 commits

Author SHA1 Message Date
Marius Gerbershagen
aa75969e33 printer: signal error in write-string if stream is not a character stream
Bug introduced in commit 5947970f6.
2018-11-28 21:44:28 +01:00
Marius Gerbershagen
52acffae4a ecl_make_symbol: call _ecl_intern with package name
This is slightly more efficient and prevents an error message like
    "There exists no package with name NIL". Instead of NIL, the
    actual name is printed.
2018-11-28 21:44:28 +01:00
Daniel Kochmański
6bb08c2d81 Merge branch 'fix-disassemble' into 'develop'
Fix #106

Closes #106

See merge request embeddable-common-lisp/ecl!127
2018-11-25 08:10:11 +00:00
Marius Gerbershagen
e7fe000400 doc: update outdated information and examples in the developers guide 2018-11-24 22:00:29 +01:00
Marius Gerbershagen
61650f8e1f doc: fix documentation for si:*keep-definitions*
The variable is set to t by default.
2018-11-24 19:35:31 +01:00
Marius Gerbershagen
9f4a5d4dd4 disassemble: display generated C source code instead of bytecodes
This behaviour makes more sense, since the ANSI standard mandates
    that disassemble should compile an interpreted function before
    displaying the output (our own documentation even says so).

    Also fixes disassemble for closures.
2018-11-24 19:20:06 +01:00
Marius Gerbershagen
71babf1f99 cmp: prevent spurious error when the compile function fails 2018-11-24 17:58:30 +01:00
Marius Gerbershagen
abf33455f6 cmp: intern compiler data symbols into the correct package
The io-syntax forced all symbols except those in the COMMON-LISP
    package to be written with a package prefix. However the symbols
    could be read when the current package was shadowing symbols in
    the COMMON-LISP package, leading to incorrectly interned symbols.

    Problem reported by Gunter Königsmann on the ecl-devel mailing
    list.
2018-11-13 22:33:16 +01:00
Exaybachay
5d4069e1fa fix header argument names for C++ compilation
fix the macro body
2018-11-02 17:31:55 +08:00
Exaybachay
bea1413ccf Revert "fix header argument names for C++ compilation"
This reverts commit 878ec343a0.
2018-11-02 17:28:17 +08:00
Exaybachay
878ec343a0 fix header argument names for C++ compilation 2018-11-02 17:16:02 +08:00
Exaybachay
eaea424f7c Revert "fix header argument names for C++ compilation"
This reverts commit 1ab9f00744.
2018-11-02 17:09:56 +08:00
Exaybachay
1ab9f00744 fix header argument names for C++ compilation 2018-11-02 13:32:35 +08:00
Marius Gerbershagen
ba573abf9e defstruct: don't use eval in define-structure 2018-10-30 11:58:19 +01:00
Marius Gerbershagen
e3cda73965 Merge branch 'develop' into 'develop'
Fix ECL_LINEFEED_MODE test with -Werror=format-security

See merge request embeddable-common-lisp/ecl!124
2018-10-29 19:40:33 +01:00
Sébastien Villemot
2ef5d11cf9 Fix ECL_LINEFEED_MODE test with -Werror=format-security
In Debian, the -Werror=format-security flag is now passed by default to gcc.
This makes the ECL_LINEFEED_MODE test fail.

The fix is to replace the call to fprintf() by fputs().
2018-10-29 19:38:17 +01:00
Marius Gerbershagen
8a1e7f5c92 cmp: don't mark all lexical variables as crossing function boundaries
The compiler refactor of commit
    7ec2f4a939 introduced an error where
    all lexical variables where marked to cross function boundaries,
    leading them to be stored in volatile variables on the stack.
2018-10-29 19:15:49 +01:00
Marius Gerbershagen
57a0346a52 doc: document behaviour of declaim and proclaim 2018-10-28 16:32:55 +01:00
Marius Gerbershagen
892e21012a cmp: make behaviour of declaim inline more sensible
ECL needs the definition of a function to inline it. Previously,
    this definition would only be saved in the file local environment
    (*cmp-env-root*) but not in the global environment used by
    proclaim. Hence, ECL could only inline functions in the same file.
    Now, we also put the definition of inline functions in the global
    environment during load time. This leads to a behaviour of declaim
    for inline functions, which is consistent with other declarations
    (meaning that the declarations stay only in force during
    compilation, but are proclaimed again at load time of the compiled
    file).
    Fixes #451.
2018-10-28 16:32:55 +01:00
Marius Gerbershagen
8812ba2189 doc: fix various typos and remove use of legacy names in examples 2018-10-26 17:54:08 +02:00
Marius Gerbershagen
cd86ac5019 doc: use category name for @defvar 2018-10-23 21:14:50 +02:00
Marius Gerbershagen
3df0a69785 doc: document floating point exceptions and infinity/NaN 2018-10-23 21:12:46 +02:00
Marius Gerbershagen
2a9084b105 prevent floating point exception signals if ECL_OPT_TRAP_SIGFPE is false
Fixes #347.
2018-10-23 21:11:02 +02:00
Marius Gerbershagen
7ff23cbb92 cmp: fix inline definition for mp:lock-count 2018-10-17 22:07:53 +02:00
Marius Gerbershagen
8676abe519 cmp: add proclamations for multithreading functions 2018-10-17 22:07:19 +02:00
Marius Gerbershagen
8ad10cec50 doc: fix some typos and errors in the multithreading documentation 2018-10-17 21:52:19 +02:00
Daniel Kochmański
4021fbdcf8 Merge branch 'atomic-ops' into 'develop'
Add support for atomic operations

Closes #278

See merge request embeddable-common-lisp/ecl!122
2018-10-15 19:23:52 +00:00
Marius Gerbershagen
46d74c5a66 cosmetic changes in assignment.d and clos/instance.d 2018-10-15 19:55:39 +02:00
Marius Gerbershagen
c45098e17a doc: add documentation for atomic operations 2018-10-15 19:55:39 +02:00
Marius Gerbershagen
239a2aa4f1 threading: add support for atomic operations
We support both compare-and-swap and fetch-and-add (via
    atomic-incf/decf) on the most common places and define an
    extension interface for compare-and-swap similiar to the one in
    SBCL.

    These changes introduce new dependencies on the libatomic_ops
    macros AO_fetch_compare_and_swap and AO_fetch_and_add.
2018-10-15 19:55:39 +02:00
Marius Gerbershagen
7272aff008 Merge branch 'stream-fixes' into 'develop'
ansi: file-string-length and broadcast-stream fies

Closes #452

See merge request embeddable-common-lisp/ecl!121
2018-10-01 19:12:41 +00:00
Daniel Kochmanski
b22dcd5e3e file-string-length: revert behavior change for string-output-stream.
We signal an error if the stream is not a file stream (like before). We provide
note in the tests that this is an undefined behavior.
2018-10-01 20:46:50 +02:00
Daniel Kochmanski
30c4120b15 tests: improve ansi.21-2.last-component test 2018-09-23 17:27:55 +02:00
Daniel Kochmanski
23753207aa defpackage: standard mandates error if :SIZE is passed twice
While we do ignore it for all practical purposes it is explicitly said in
standard that we should signal error. Also :SIZE  is not an extension (but may
be not used since it is just a hint).
2018-09-23 17:26:32 +02:00
ZhangYuguo
5eeae0d823 build system: suppress some logo(copyright) information for msvc toolchains. 2018-09-23 13:41:22 +00:00
Daniel Kochmanski
a1875da85a ansi: return NIL for file-string-length if can't determine it.
Previously we returned error for streams which are not file streams. We could
try to loose this test for ECL_ANSI_STREAM_P, but that would require confirming,
that all ECL's ANSI streams have string encoders defined.
2018-09-23 15:28:34 +02:00
Daniel Kochmanski
e10802b5e8 broadcast-stream: delegate file-* functions to the last component.
Fixes #452.
2018-09-23 15:28:34 +02:00
Daniel Kochmanski
3f8a78ca63 tests: add regression test for broadcast stream and file-* functions 2018-09-23 15:28:34 +02:00
Marius Gerbershagen
02b501e5a6 doc: fix typos and errors in ffi documentation 2018-09-18 19:59:40 +02:00
Marius Gerbershagen
2192e63e59 ffi: protect with-foreign-string and with-foreign-object against interrupts 2018-09-18 18:47:01 +02:00
Marius Gerbershagen
a34b6d0ca4 threading: proctect with-rwlock against interrupts 2018-09-18 18:45:41 +02:00
Marius Gerbershagen
3824e1b6da doc: fix documentation for mp:without-interrupts 2018-09-15 19:59:06 +02:00
Marius Gerbershagen
198f051369 export with-restored-interrupts from mp package 2018-09-15 19:54:51 +02:00
Marius Gerbershagen
95b0523bfe top.lsp: make with-grabbed-console interrupt safe 2018-09-15 19:53:42 +02:00
Marius Gerbershagen
b5194ca774 threading: fix interrupt safety of out_of_memory function
This function used writes in the thread local environment while
    interrupts where disabled with the env->disable_interrupts
    mechanism, which causes problems with the mprotect() mechanism for
    fast interrupt dispatch.
2018-09-09 17:06:32 +02:00
Marius Gerbershagen
57f6637902 threading: introduce thread safe ECL_UNWIND_PROTECT macro and use where needed
Disabling interrupts during execution of cleanup forms of
    unwind-protect caused problems in some cases. Hence only do this
    where needed, i.e. for freeing resources (such as locks or files)
    shared between multiple threads or processes.
2018-09-09 17:00:38 +02:00
Marius Gerbershagen
dfd24e45c5 Revert "threading: block interrupts during execution of cleanup forms in unwind-protect"
This reverts commit 24e4c13d58.
2018-09-08 17:46:55 +02:00
Daniel Kochmanski
703771fc3d Revert "cmp: execute cleanup forms of unwind-protect with interrupts disabled"
This reverts commit b8df7a777c.
2018-09-04 17:53:30 +02:00
Marius Gerbershagen
30fa0cd7a5 reader: fix do_patch_sharp for bclosures
do_patch_sharp was erroneously returning only the bytecode,
    stripping away the lexical environment.
2018-09-01 17:32:45 +02:00
Marius Gerbershagen
741a01da09 reader: fix reading of bclosures
The syntax had been changed in commit
    991bc3ab78, but the reader macro
    became broken in the process and commit
    835e85bc99 removed the broken
    parts. Since the reason for the change in the syntax is unclear,
    go back to the old syntax.
2018-09-01 17:31:19 +02:00