freenode/#lisp - IRC Chatlog
Search
4:50:54
gendl
the cl spec was spoken most recently by Lord Krishna to Arjuna on the battlefield of Kurukshetra. But it was spoken millions of times before that.
5:01:25
gendl
Before it was finally written down for our puny modern brains to be able to grasp, the cl spec was recited in rythmic triṣṭubh meter (which provides a kind of built-in verbal checksum) and carried by this spoken tradition from master to disciple throughout the eons.
6:43:03
Shinmera
ealfonso`: North allows you to implement oauth 1.0a client and server flows. For oauth 2 you're on your own.
6:56:13
beach
This is mid October in Bordeaux, but it is going to be 30°C today. I believe it's a record.
7:07:15
no-defun-allowed
if everything is sufficiently unboxed, i think a lot could be parallelised on a MIMD system.
7:12:11
White_Flame
no-defun-allowed: when it comes to custom lisp processors, assistance with GC, numeric type dispatch for fixnum vs bignum, and direct support for tag bits would be most helpful
7:13:23
beach
I don't think a custom Lisp processor could compete with a good implementation on stock hardware these days.
7:13:50
White_Flame
it would basically be an exercise in reducing the impedance mismatch between lisp low levels and the target asm
7:14:00
beach
Such a processor would have to be as fast as the fastest microprocessors today, and that would cost a fortune to make.
7:15:06
Jachy
For certain workloads you might be able to make a non von-neumann design in an FPGA that does pretty well even with a MHz clock rate...
7:15:13
Shinmera
And I'd argue that solving things efficicently in silicon is harder than in software
7:17:42
shka_
no-defun-allowed: it is not practical for everything else then gigadollar corpo running ultra specific piece of software
7:18:30
no-defun-allowed
also, a lisp-optimised machine might also sidestep issues we have seen in the past but i'm speculating on that
7:18:55
Jachy
The last time I seriously looked at it was this project, I don't remember the details very well though. (It was also Haskell.) https://www.cs.york.ac.uk/fp/reduceron/
7:20:14
beach
Jachy: My guess is that the mismatch between Haskell and stock hardware is much greater than the one between Common Lisp and stock hardware.
7:27:27
aeth
afaik a class is a type but a type isn't necessarily a class because you can have types like (integer 0 *) or (simple-array (unsigned-byte 8) (42))
7:28:25
aeth
at the very least, I've never had a problem with using classes (structure or standard) where types go (defstruct creating an array obviously doesn't count: that doesn't create a type even though it could and probably should)
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.