freenode/#lisp - IRC Chatlog
Search
19:40:52
aeth
(If simple-vector worked like everything else you could just say (simple-vector double-float) instead of (simple-array double-float (*)) since the size would be an optional argument at the end. But you can't.)
19:47:36
anamorphic
Yeah had noticed that about simple-vector. Is it a historical thing that it doesn't have a type specializer?
19:54:06
White_Flame
but yeah, I've been bitten by that as well in utf-8 and byte buffer conversions. One library uses simple-vector, the other uses simple-array, and they are not interchangeable; you need to copy the data to an object of the other type in order to bridge them
20:08:25
oni-on-ion
https://sirherrbatka.github.io/blog/2018/10/11/cl-data-structure-ranges-are-pretty-cool/
20:27:11
XachX
the 403 in that case really means "no object is here but i don't want to tell you that"
20:27:11
shelvick
Oh? interesting... I was doing something through qlot which has worked before up until maybe an hour ago
20:27:50
XachX
shelvick: https://beta.quicklisp.org/dist/quicklisp/2018-08-31/distinfo.txt is the normal pattern
20:30:54
aeth
If you use a simple-vector for octets then everything's 4x larger in memory (if 64 bit) and the compiler loses any chance at knowing what type it is when AREFing
20:43:10
aeth
(Oh, and the GC has to iterate through the T vector to see if anything's a pointer, doesn't it?)
22:16:51
White_Flame
oh, regarding the above discussion, the binary type mismatch was simple-array of bytes, vs vector of bytes
22:17:24
White_Flame
sb-ext:octets-to-string for example requires a specialized (vector (unsigned-byte 8))
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).