freenode/#lisp - IRC Chatlog
Search
7:33:01
aeth
The only thing you'd want in custom Lisp hardware is unboxed (unsigned-byte 64), (signed-byte 64) and double-float imo (and other type optimizations).
7:52:30
aeth
stylewarning: but would it be worth it because of the lack of the programmability of it?
7:53:39
semz
can always go for a middle ground where the HW has some helpers for a software GC on top, iirc that's how symbolics did it
7:54:03
Shinmera
You don't implement GC in the hardware. You add features that make GC easier/better.
7:55:13
stylewarning
For example, native hardware schemes for managing cross-function boundaries of data passing, hardware schemes for communicating multiple values (maybe?), ...
7:55:45
stylewarning
Anyway I think my point is that Lisp hardware probably can be better than “just unboxed 64-bit integers”
7:57:57
ggole
Almost no functions return multiple values, so making that fast wouldn't help you much
7:58:12
Jachy
Relevant history (was just rereading this earlier today): https://www.snellman.net/blog/archive/2017-09-04-lisp-numbers/
7:58:20
ggole
And you can (probably) use tricks to make known calls fast anyway without any hardware support
8:01:33
stylewarning
ggole: but maybe no functions return MV because they’re tricky to make very fast? Who knows
8:02:33
stylewarning
ggole : I feel I always have to inline them in order to eliminate the baggage. And then SBCL inserts these CLC instructions for just about EVERY function call and that has to do with MV
8:05:10
aeth
imo there are two reasons why multiple values are not as common as they could be (1) they're not esay to work with (multiple-value-bind is separate instead of (let (((values foo bar baz) (foobar 42))) ...))
8:05:23
aeth
and (2) there aren't convenient built-ins for easily working with them (e.g. no multiple-value-map)
8:06:05
stylewarning
I want MV to be a low-level construct. MV isn’t a data structure so much as it is a low-level scheme for moving data around between functions
8:07:23
aeth
Yes, but you can't do something like multiple-value-map without consing a list via multiple-value-list and thus defeating one of the points of having multiple values, so a lower level implementation could be justified.
8:08:00
tko
I just tried to install sbcl via apt-get on Ubuntu, would anyone know why attempting to start up a repl gives me "fatal error encountered in SBCL pid 16302(tid 140737353966144):
8:08:05
ggole
If you want multiple values to just be returned in registers, you don't really need hardware for that
8:09:21
stylewarning
Well, to be clear, you don’t really need HW for anything. We have perfectly reasonable Lisp implementations on hardware that’s nearly adversarial to Lisp. (:
8:09:27
ggole
You just need an implementation with the necessary tricks to do that and still handle redefinition (including redefinition where the number of values returned has changed)
8:13:36
beach
tko: It seems you have a version mismatch between the .core file and the executable file.
9:22:35
earl-ducaine
"Read-time value of form " ....effectively a quasi comma you can use inside ordinary quotes, e.g. '(one two #.(+ 1 2))
9:23:59
beach
Sometimes you want to make clear to the person reading your code what the origin of a constant is.
9:24:53
Shinmera
since case does not evaluate the cases, you can use read-time evaluation to get the constant in.
9:37:56
earl-ducaine
My brain is too tired for CL obfustication... the #. I think is the source of trying bug. Periodically, I have to delete the binaries of a file I've compiled, even though the contents of the source file has never changed.
9:43:06
earl-ducaine
e.g. in my above example, if the function make-event-mask is changed, the value it produced when *event-mask-alist* was compiled will never get the update in an ordinary asdf build.
9:49:07
beach
nokdoottt: Are you sure it is a big number rather than a ratio like 234234234234234234/234234242342342
9:52:12
beach
nokdoottt: If all your constants are rational and your operations preserve this fact, then the result is a rational as well.
9:52:33
beach
nokdoottt: The moment you stick in a float there, like 1.0, everything gets converted to float.
11:03:01
no-defun-allowed
Single floats are supposed to be good for at least six digits with small numbers, so I'm happy with that.
15:55:40
Posterdati
iolib is not usable on bsd systems, due to wrong error constants definitions in sockets/grovel.lisp and syscalls/ffi-types-unix.lisp
16:25:29
White_Flame
no-defun-allowed: specifically, 32-bit ieee floats have 7.22 decimal digits of precision