New inline stable sort for vectors
This PR should improve on the current stable sorting of vectors, fixing issues such as #217 (bug) and #101 (performance).
Full disclosure: The merge sort algorithm was completely stolen from sbcl.
I'm sure the new version can be optimized, for example by inlining `stable-sort-merge-vectors`, and by treating simple-arrays differently.
But for now, it already has slightly better performance on the sequences that I tested with, for example running:
```common-lisp
(time (dotimes (x 50000)
(defparameter *my-arr*
(make-array 9 :initial-contents
(list
(cons 3 'a)
(cons 2 'b)
(cons 2 'c)
(cons 2 'd)
(cons 3 'e)
(cons 2 'f)
(cons 2 'g)
(cons 2 'h)
(cons 1 'i))))
(stable-sort *my-arr* #'< :key #'car)))
```
gave me 0.34 sec in the old version, and 0.28sec in the new one (even with the overhead of the make-array call, which is the same for both). But most importantly, the new version leaves the array sorted, which fixes bug #217:
```common-lisp
> *my-arr*
#A(T (9) ((1 . I) (2 . B) (2 . C) (2 . D) (2 . F) (2 . G) (2 . H) (3 . A) (3 . E)))
```
while in the old-version:
```common-lisp
> *my-arr*
#A(T (9) ((3 . A) (2 . B) (2 . C) (2 . D) (3 . E) (2 . F) (2 . G) (2 . H) (1 . I)))
```
The example in #217 also works now, of course:
```common-lisp
> (let ((a (copy-seq "BCA")))
(stable-sort a #'char<)
a)
"ABC"
```
See merge request !28
Fix profiler module
This handles Issue #163.
Removes the problematic list case, and ignores any argument that is not a symbol or string.
Example of new behaviour:
```common-lisp
> (profile:profile 'defined-function)
;;; Warning: ignoring invalid argument to PROFILE: 'DEFINED-FUNCTION
> (profile:profile undefined-function 'defined-function defined-function)
;;; Warning: ignoring undefined function UNDEFINED-FUNCTION
;;; Warning: ignoring invalid argument: 'DEFINED-FUNCTION
> (profile:profile) ; list profiled functions
(DEFINED-FUNCTION)
```
See merge request !26
fix minor typo in pprint error message
Minor fix to an error message I got when trying to change a read-only pprint dispatch table.
See merge request !25
Improve man and help.
Sorry that it took so long.
I reorganized man page, so that now it tells truth about current flags. Also updated information about the authors.
Same for help prompt(--help).
Also, added some of these changes to changelog. I(my emacs)'ve been willing enough that I(my emacs) removed trailing whitespace. If you find that inappropriate, please let me know.
There is one thing that should be somehow fixed - we should have release.sh script(or something like that), that'd prepare a new build of ECL for release,
and change the date that's shown in man(or do we have that already?) - I've currently set it to 10.05.16 (dd/mm/yy).
See merge request !22
Support for aix on 32 and 64 bit.
* add UNIX as *features* on aix to build asdf.
* configure thread and runlime linking.
* generalize print_lock macro as xlC complain on variadic
macro arguments number.
See merge request !23
* add UNIX as *features* on aix to build asdf.
* configure thread and runlime linking.
* generalize print_lock macro as xlC complain on variadic
macro arguments number.
On armv7hf NetBSD libm doesn't provide ldexpl frexpl functions while
provides sinl cosl tanl logl and expl apparently. To sanitize the
autodetection of long double we need to add them to the list.