Custom Query (1030 matches)
Results (865 - 867 of 1030)
| Ticket | Resolution | Summary | Owner | Reporter |
|---|---|---|---|---|
| #1014 | fixed | remove-if-not consing: seems to fully copy the original sequence before removing elements | ||
| Description |
(DEFPARAMETER *FILTERED-LIST* (REMOVE-IF-NOT (CONSTANTLY NIL) *LONG-LIST*))
took 75,108,000 microseconds (75.108000 seconds) to run.
73,183,190 microseconds (73.183190 seconds, 97.44%) of which was spent in GC.
During that period, and with 8 available CPU cores,
74,662,078 microseconds (74.662080 seconds) were spent in user mode
171,601 microseconds ( 0.171601 seconds) were spent in system mode
320,000,128 bytes of memory allocated.
(length *long-list*)
=> 20000000
(/ 320000128.0 (length *long-list*))
=> 16.000006
;; I.e. 16 bytes (64 bit cons) per element of original lisp
(asdf:implementation-identifier)
=> "ccl-1.8-f95-win-x64"
Probably the remove-if-not implementation could be enhanced. |
|||
| #1015 | fixed | user code is forced to have a race condition between ccl:external-process-status and ccl:signal-external-process | ||
| Description |
The use case. If the external process I started exceeds a timeout, I am trying to kill the process by sending it signal 9 using ccl:signal-external-process. To know that the process exceeds the timeout, I pool it with ccl:external-process-status and check if the result is :running. I.e. my code may approximately be represented as: (when (and (eq :running
(ccl:external-process-status lisp-process))
(< end-time (get-universal-time)))
(ccl:signal-external-process lisp-process 9))
But sometimes, the process finishes right after I got the :running from (ccl:external-process-status lisp-process), but before (ccl:signal-external-process lisp-process 9) tries to send it a signal. In this case, CCL signals SIMPLE-ERROR with text "No such process". I can not distinguish this error of process being finished, from other errors, because the CCL API doesn't specify particular condition type for this situation, and I can't rely on the text "No such process" as well (I believe the text is linux message for the corresponding errno value). So, I try to setup a condition handler, and in the handler check the external-process-status again. If it is not :running, I deduce that the condition signaled is caused by the fact that the process has terminated (which is what my code wanted - to kill it, so I can just continue normal processing). In most cases it works. But sometimes, after the "No such process" error was signaled and the handler calls external-process-status, external-process-status returns :running. I assume this is because the external process is monitored by an internal CCL background thread, and the background thread hasn't yet synchronized the external-process CCL structure inspected by external-process-status. As you see, it's not easy to reliable kill and external process by timeout. The API design forces user to deal with these race conditions. I am not ready to propose a solution. Maybe synchronization of the external-process object with the real situation before signaling the error would be a good idea? |
|||
| #1017 | invalid | Trifle in documentation: class definition slot args - readers writers | ||
| Description |
My mistaken defclass threw up: Error: :ACESSOR is an invalid initarg to INITIALIZE-INSTANCE for #<STANDARD-CLASS CCL:STANDARD-DIRECT-SLOT-DEFINITION>.
Assume this should be :reader and :writer (not plural). |
|||
