freenode/lisp - IRC Chatlog
Search
22:56:42
fiddlerwoaroof
The main problem is that they don't really reflect the state of the art anymore, as far as I'm aware
23:31:01
foom
Xach: well, I have lots of experience with sbcl's being non-optimal. CCL's I have less experience with; it might be at the very least a better-working stop-the-world single-threaded generational gc. (I don't know). But, either way, that's still far from what anyone would call a good GC these days.
23:34:01
pjb
I'm still have to encounter a situation where the particular gc algorithm is a problem.
23:34:42
fiddlerwoaroof
I suspect it would be places where latency is the most important consideration
23:35:12
foom
Reading about the huge advanced made in Go's GC implementation over a few releases can give a pretty nice picture of what a modern GC can be expected to do.
23:35:50
fiddlerwoaroof
foom: from what I understand, Go's gc isn't really "good" so much as it's been tuned for a very specific set of uses
23:38:12
libreman
Is there any better way to interact with couchdb than clouchdb? It seems to contain a lot of bugs and the code quality is also quite poor.
23:38:53
foom
fiddlerwoaroof: I'm not going to argue about the definition of "good", but, let's just say it has a lot of goodness in it.
23:39:43
drmeister
Hey folks - I thought I'd toss this out if anyone is interested and has free time for a little Common Lisp project.
23:40:29
drmeister
Clasp's compiler doesn't currently signal warnings for unknown special variables or functions - nor does it match calls to lambda lists.
23:41:15
drmeister
If you or anyone you know might be interested in beefing up this aspect of Clasp's Common Lisp compiler (which runs Cleavir) - I'd love to talk with you.
23:41:46
drmeister
Nice error messages and warnings would be really helpful rather than discovering problems at runtime.
23:42:56
Bike
cleavir already signals both of those, you just want it to assume things about missing variables/warnings. with functions that involves waiting for the compilation unit, but variables can be immediate if you just warn in the handler
23:46:14
raydeejay
I started reading Communicating Sequential Processes and I'm trying to implement the first examples in CL... does this look sound?
23:46:40
Bike
it would actually warn now if there's an explicit declaim ftype, but declaim ftype doesn't work on clasp
23:51:34
Bike
well, you might want to make the warning clearer, like "found an unbound variable, assuming it's special" kind of thing, but yeah essentially
23:54:08
Xach
i am a-wrasslin with all implementations today, and their treatment of DIRECTORY and symlinks (which might be dead). does clasp copy ecl in its directory interface?
0:01:40
Xach
drmeister: I mean the standard cl:directory function, which is almost always augmented by implementations with new arguments.
0:05:56
Xach
drmeister: Ok. I'm curious about two things - is there a way to not resolve symlinks? and what happens to dead symlinks?
0:07:25
drmeister
I can't answer those questions off the top of my head. But here's an example of the differences between ECL and Clasp...
0:10:20
Xach
but in my case, i need to go against that standard behavior, and most (maybe all?) implementations enable that.
0:12:40
Xach
drmeister: it varies by implementation. on sbcl, it's :resolve-symlinks nil. on ecl, it's the same.
0:12:57
drmeister
This is clasp's directory lambda list: (mask &key (resolve-symlinks t) &allow-other-keys)
0:14:27
drmeister
Yes - clasp pays attention to the :resolve-symlinks argument and acts accordingly.
0:17:22
drmeister
Clasp may have a problem in that it returns /private/etc for (directory "/*") where ECL doesn't
0:18:16
Xach
drmeister: if you do (directory "/etc/*.*" :resolve-symlinks nil) do you get ("/private/etc/..." ...) or ("/etc/..." ...)?
0:21:11
drmeister
Is what clasp is doing non-conformant - or does this count as implementation dependent behavior?
0:21:42
Xach
very implementation-dependent. but it seems to go against the intent of the argument - it looks like it *is* resolving symlinks, just a symlink at a higher level
0:21:55
drmeister
Also, as a rule, I try to reproduce what ECL does because it simplifies things like this.
0:24:58
drmeister
This is clasp: https://github.com/drmeister/clasp/blob/dev/src/core/unixfsys.cc#L1358
0:39:25
myrkraverk
That is, can I "use" something in a package only if the user already ql:quickload;ed it?
0:42:21
myrkraverk
Does ql:quickload have something to propagate such options to the system/package?
0:43:37
myrkraverk
Specifically, I'm wondering if a user can specify flexichains as on optional dependency on my punycode decoder.
0:44:28
myrkraverk
Though even if I haven't yet done some benchmarks, I'm thinking about making it some sort of an optional thing; not a requirement.
0:45:47
myrkraverk
Maybe I can have punycode use some sort of plugins and punycode+flexychains load it with that plugin.
0:47:17
myrkraverk
I just have to do some experimentation and see if I can come up with a sane plugin API.
0:48:17
myrkraverk
In other news, I have finished the decoder implementation; now I just have to splice in flexichains (and maybe plugins) for some sort of efficient string building.
0:57:18
myrkraverk
"punycode-decode doesn't implement it at all." <-- also lies. There is a decoder in the source.
1:41:07
TruePika
these are base methods for a base class; they'll _work_ for properly-defined subclasses, but it is best to have a version specifically for each subclass which is optimized to its architecture
4:26:57
krwq
hello, I'm trying to port my app to windows, when running it, it tries to do something with gcc and says that it can't find it - i have installed mingw hoping it will discover it after but it didn't - anyone has done that before?
4:30:45
krwq
Thank you pillton - i still am getting errors but ill try to figure it out myself first
4:44:45
krwq
is there any way to tell what error did the grovel process exit with? when i run that manually from command line i get different error depending if im in mingw/bin or not
4:52:54
pillton
From what I recall the 64bit version of mingw had to be downloaded and installed separately.
5:32:57
axion
Given that the recommended style for predicates is foop/some-foo-p, how should a defstruct slot be defined? Should it be ex: foo-p such that the concatenated accessor is some-foo-p? Or some other way?
5:34:59
loke
Since I pretty much always use DEFCLASS rather than DEFSTRUCT, that's a natural thing anyway.
5:38:01
axion
Not just that, but for type defining structs as arrays and such: http://paste.lisp.org/display/336028
5:40:18
Bike
i mean the defstruct is completely different, it doesn't define a type, it defines a copy function, like five other functions
5:42:33
axion
It doesn't have to be. This way I get an array that can be uploaded to OpenGL and be able to access it like an object, and declare the input of all functions as a specific type of array.
5:45:45
axion
Because the :type on the struct allows SBCL to treat it purely like a vector type, so the optimization can work very nicely on it.
5:46:14
axion
Also, I can know exactly the size of the structure in memory, since it is a real array of a certain type, but it is harder to know for defclass instance.
6:05:13
jackdaniel
I'm not sure if I understand, even spec says explicitly "defstruct defines a structured type, named structure-type (...). "
6:06:21
Bike
"If no :type option is involved, then the structure name of the including structure definition becomes the name of a data type"
6:06:45
Bike
er, wrong bit. "For structures defined with a :type option, type-of returns a type specifier such as list or (vector t), depending on the type supplied to the :type option. The structure name does not become a valid type specifier. "
6:08:40
axion
That's where deftype comes in, so I don't have to (declaim (ftype (function (some-long-array-type ..))))
9:24:19
Bike
with :type defstruct turns into a convenient way to define a bunch of thin wrapper functions
9:25:04
Bike
and perfectly implementable in the rest of common lisp, except for boa constructors probs
9:59:07
phoe_
there's a gzip library for CL, you could technically use it to extract files into strings, streamify them and supply them to LOAD.