Commit graph

7650 commits

Author SHA1 Message Date
Daniel Kochmański
0fcf21b4a7 tests: compiler: add regression test for constant folding. 2019-05-05 10:38:02 +02:00
Daniel Kochmański
0033f24be2 constant folding: fix regression for single and multiple values
Closes #497.
2019-05-05 10:38:02 +02:00
Daniel Kochmański
5dd4174225 msvc: gmp: add mpq sources 2019-05-05 10:38:02 +02:00
Daniel Kochmański
1533824059 buildsystem: improve checks for floats
We do not check for c99-mandated functions for long float (we only
check for the type). We also check for complex numbers in a separate
function and define ECL_COMPLEX_FLOAT when found.
2019-05-05 10:38:02 +02:00
Daniel Kochmański
7c6de43e4c numbers: use fast dispatch in ecl_integer_divide (round) 2019-05-05 10:38:02 +02:00
Daniel Kochmański
0bf83ed03d numbers: test for appropriate argument type in unary ops
This touches minmax, equalp and comparison of numbers. We also replace
old nested switch in ecl_number_compare with fast dispatch. Fixes #486.
2019-04-20 22:31:21 +02:00
Daniel Kochmański
22865f0c55 tests: improve signals macro to allow description 2019-04-20 22:31:21 +02:00
Daniel Kochmański
0c8fe7e2c8 cleanup: line breaks, dead code removal 2019-04-20 22:31:21 +02:00
Daniel Kochmański
3766821b25 cosmetic: indent, line breaks 2019-04-20 22:31:21 +02:00
Marius Gerbershagen
299f9fb1c6 Merge branch 'fix-complex-typep' into 'develop'
Fix complex typep

Closes #493

See merge request embeddable-common-lisp/ecl!144
2019-04-20 15:51:31 +00:00
Daniel Kochmański
155ccac218 tests: add regression test for typep and subtypep and complex.
Fixes #493.
2019-04-20 17:14:19 +02:00
Daniel Kochmański
097fa96ae0 cmp: coerce: resolve fixme for atomic complex specifier
it is not true, that

  (type= '(complex) '(complex double-float)) == T

so we may put complex in +coercion-table+.
2019-04-20 17:14:14 +02:00
Daniel Kochmański
d7c351c76a predlib: type= doesn't yield T for complex types
TYPE= is only used from cmpopt's typep compiler macro which optimizes
atomic complex types by other means. Compound complex types are
handled differently for subtypep and typep (the first relies on
upgraded type and the second relies on the actual types), so we can't
rely in this case on SAFE-CANONICAL-TYPE.
2019-04-20 17:13:17 +02:00
Marius Gerbershagen
06b8e49d89 cis: check argument type to be real 2019-04-19 17:33:10 +02:00
Daniel Kochmański
2ec7688554 Revert "si::type=: do not assume all complex number types to be equivalent"
This reverts commit 177ad215ea.

See #493. the issue with typecase must be resolved outside the
subtypep because these numbers indeed have the same internal
representation (see clhs entry for subtypep and typep).
2019-04-19 17:28:19 +02:00
Daniel Kochmański
ab35ce71a2 Merge branch 'develop' into 'develop'
Fix for #482

Closes #482

See merge request embeddable-common-lisp/ecl!143
2019-04-18 10:32:10 +00:00
Marius Gerbershagen
93496e108c configure: change manual installation
Introduce a configure option controlling the installation and build
the documentation during the build instead of the install phase. Targets
for installation of the html version have also been added.
Fixes #482.
2019-04-11 18:17:02 +02:00
Marius Gerbershagen
1ad91df1cf configure: fix check for system libatomic_ops
Previously we would not fail if trying to link to an incompatible
libatomic_ops.a
Fixes #481.
2019-03-25 19:46:02 +01:00
Marius Gerbershagen
209434f91a cmp: fix constant folding for functions that return multiple values 2019-03-23 18:51:18 +01:00
Marius Gerbershagen
0407b9697c defstruct: fix print-object and print-function options for lambdas
Bug introduced in commit ba573abf9e.
2019-03-23 17:36:37 +01:00
Marius Gerbershagen
8bc2f8a983 loop: fix type declarations for nil-initialized variables
In expansions such as
(loop for i of-type some-type in some-list ...)
we were declaring the type of i to be some-type instead of the
correct (or null some-type).
2019-03-23 16:35:29 +01:00
Marius Gerbershagen
f7cd2b8775 defstruct: be less strict about struct redefinitions
Only disallow struct redefinition if we are certain about subtype
relationships in slots. Otherwise, we can wrongly disallow struct
redefinitions which don't change slot types.
2019-03-20 22:40:21 +01:00
Marius Gerbershagen
177ad215ea si::type=: do not assume all complex number types to be equivalent
This leads to compiled code checking types such as (complex
single-float) with a simple call to complexp. While this may
technically be allowed by the ANSI standard, since
upgraded-complex-part-type always returns 'real, it is very confusing
since for example typep correctly discriminates between different
complex part types.
See #468.
2019-03-20 22:03:06 +01:00
Marius Gerbershagen
944805cbf5 contrib: defsystem: (hopefully) finally remove all old package names
Fixes #480.
2019-03-20 21:20:28 +01:00
Daniel Kochmański
106c31937b Merge branch 'develop' into 'develop'
add msvc/package-locks.asd to .gitignore

See merge request embeddable-common-lisp/ecl!142
2019-03-19 13:03:54 +00:00
Yuguo Zhang
608dbdecf2 add msvc/package-locks.asd to .gitignore 2019-03-19 12:52:48 +08:00
Daniel Kochmański
20fdd44b79 contrib: defsystem: fix packages 2019-03-15 20:38:39 +01:00
Daniel Kochmański
d22bfd0ce1 Merge branch 'unix-signal' into 'develop'
Document unix signal handling capabilities

See merge request embeddable-common-lisp/ecl!137
2019-03-15 19:26:56 +00:00
Daniel Kochmański
548f4eb318 Merge branch 'ansi-nicknames' into 'develop'
ansi conformance: remove spurious package nicknames

See merge request embeddable-common-lisp/ecl!141
2019-03-15 19:22:35 +00:00
Daniel Kochmański
eee8ed7557 ansi conformance: remove spurious package nicknames 2019-03-15 19:22:35 +00:00
Marius Gerbershagen
c5d2408cc5 be consistent with the arguments passed to signal handlers
The :process keyword argument is used inconsistently for symbols
    denoting functions and function objects. Furthermore, it isn't
    needed and unused in our own code.
2019-03-15 18:54:05 +01:00
Marius Gerbershagen
eb6854f6d9 doc: document unix signal handling capabilities 2019-03-11 17:16:13 +01:00
Daniel Kochmański
72127722da Merge branch 'stream-fixes' into 'develop'
ANSI Streams: Document extensions and fix various bugs

See merge request embeddable-common-lisp/ecl!140
2019-03-11 15:26:52 +00:00
Marius Gerbershagen
44f460a7d2 doc: document ANSI stream extensions 2019-03-02 17:50:33 +01:00
Marius Gerbershagen
eddd9cc9aa streams: export si:set-buffering-mode in ext package
This function is also useful for users and thus belongs in the
external interface.
2019-03-02 17:40:38 +01:00
Marius Gerbershagen
25688d1531 sequence streams: fix and simplify stream creation functions
Since we only support vectors with element type size of a byte, we
don't need to check for non-base-strings. Also make sure to set
the byte size of the stream always to a positive value.
2019-03-02 17:40:38 +01:00
Marius Gerbershagen
686127588a generic_read_byte_signed8: use safe conversion to signed char
We now signal an error when trying to write a byte outside of the
range of a signed char to a stream with element type (signed-byte 8)
2019-03-02 17:40:38 +01:00
Marius Gerbershagen
9f9dd19840 streams: fix byte-order-mark for :ucs-2 and :ucs-4 external formats
We were writing little-endian BOMs, but writing big-endian characters.
2019-03-02 17:40:38 +01:00
Marius Gerbershagen
41eb59ab46 Merge branch 'defclass-nil' into 'develop'
Fixes for NIL-related conformance problems

Closes #474 und #475

See merge request embeddable-common-lisp/ecl!139
2019-02-24 20:16:18 +00:00
Daniel Kochmański
f87d50f053 bytecmp: tagbody: ensure ECL_NIL->ECL_NIL_SYMBOL conversion
Issue comes from the fact that list and symbol types are not
disjoint. Fixes #475.

My personal opinion (to put some rambling in a commit message) is that
having NIL being so many things is a blatant mistake and shouldn't be
picked up for Common Lisp (though many programs would probably break
and it wouldn't be so Common then).
2019-02-24 14:22:13 +01:00
Daniel Kochmański
95dd38abd3 defclass: make sure that defclass option "NIL" errors
This is as for CLHS section 7.1.2. Error was caused by the fact that
unknown-key was a flag, so if the initarg was NIL, we were assigning
it value NIL, what is also a boolean false. Right now we collect all
invalid initargs in a list, so in case of NIL we'll get (NIL) what is
a generalized boolean true value. Closes #474.

Also add cosmetic fixes with declarations.
2019-02-24 12:15:27 +01:00
Marius Gerbershagen
2f15d4fad9 Merge branch 'fix-copyrights' into 'develop'
copyright: add Marius to the maintainer list.

See merge request embeddable-common-lisp/ecl!138
2019-02-22 18:43:37 +00:00
Daniel Kochmański
77d2cc50cd copyright: add Marius to the maintainer list.
His contributions and activity beg for doing that; henceforth I
recognize him as a co-maintainer of the project.
2019-02-22 18:43:37 +00:00
Daniel Kochmański
c2daebc4bd Merge branch 'develop' into 'develop'
enable long float support on windows msvc build.

See merge request embeddable-common-lisp/ecl!136
2019-02-22 10:55:19 +00:00
ZhangYuguo
913cab0bf9 enable long float support on windows msvc build.
since c99 is mandatory now, we should never consider msvc6 anymore.
2019-02-19 15:11:23 +08:00
Daniel Kochmański
60d19cd9ab numbers: don't assume ECL is always built with longfloat
Fixes regression with windows builds (and all buidls without longfloat).
2019-02-16 10:45:19 +01:00
Marius Gerbershagen
60870ae9b0 use correct unnormalized values for minimum float constants
Fixes #470.
2019-02-13 20:24:26 +01:00
Marius Gerbershagen
19c6635ff0 expt: use pow function for floating point numbers
Improves speed and accurracy.
2019-02-12 22:37:23 +01:00
Marius Gerbershagen
dff91be38c sysfun.lsp: clean up inline expansions for floating point numbers
Define all expansions also for long floats if available, use
    single float C functions when given a single float.
2019-02-12 22:30:57 +01:00
Marius Gerbershagen
fee1d49baa fix float-precision for long floats 2019-02-09 22:06:35 +01:00