freenode/#lisp - IRC Chatlog
Search
23:06:13
pjb
public void foo(String a, String b); public void foo(String a){ foo(a,"bar"/*the default*/); }
23:07:37
dim
pjb: do you know http://p-nand-q.com/programming/obfuscation/java/computed_gotos_howto.html already? ;-)
2:07:12
malice
I inserted break after some let, but I can only see one variable of this LET, and there should be three.
2:07:29
malice
Is it possible that compiler optimized out these variables and that's why they're missing?
2:15:59
malice
I'm still wondering. After adding log statements some variables appeared, but not all.
3:00:24
|3b|
ACTION just does (break "foo" x y z ...) when i want to see variables in break, works for specials or expressions too :) (hit enter or middle click on "foo" at top of debugger window to see the values in inspector)
3:03:21
|3b|
well, usually i just try C-u C-c C-c on the function and try restarting the frame if i'm not doing something where that risks breaking state i want to keep (or repeating external side effects in a bad way)
3:38:01
drmeister
(defmacro := (x y) `(defparameter ,x ,y)) to reduce the horizontal space necessary to defparameter.
3:42:50
phoe
I see. It's a map, so does it mean these parts are connected in reality in atoms denoted by purple lines? What are *design-view* and *cagg*?
3:43:58
phoe
So you're basically telling the reader, "and here are these identical ring structures"?
4:03:10
akkad
cffi is blowing up on this with lw. Illegal car (OS-UNIX-P) in compound form ((OS-UNIX-P) "o").
4:37:55
drmeister
Common Lisp almost has one now - I need to switch to using Bordeaux threads from Clasp's threads to make it general.
4:40:10
drmeister
I heard that at the end of a very looong talk on Jupyter widgets: https://www.youtube.com/watch?v=eWzY2nGfkXk
4:57:36
drmeister
Which demo is that? There is this: dockerhub.com/drmeister/cando - but it's not yet set up as a demo.
5:21:04
drmeister
beach: I'm thinking more about implementing first class global environments for sandboxing.
6:59:11
fiddlerwoaroof
Every time I compile something to be run on another computer, I wish ASDF could statically link C libraries for things like osicat
7:00:16
fiddlerwoaroof
ACTION wishes we could program against a better abstraction layer than CFFI for inter-language communication
7:02:10
fiddlerwoaroof
Ah, I see, I was hoping that there was some way for the dumper to link in the object files
7:05:23
fiddlerwoaroof
What makes them difficult? (I barely know anything about how they work under the hood)
7:06:03
|3b|
save-lisp-and-die only rebuilds the lisp part, it doesn't rebuild the runtime (written in C)
7:06:40
Shinmera
|3b|: I didn't want to say because I'm not sure about it: does it basically just attach a memory block to the existing C binary that is loaded on boot?
7:07:01
fiddlerwoaroof
Yeah, but I'm talking about doing something to prevent things libraries like osicat from making your dumped image have a runtime dependency on a shared library
7:07:44
Shinmera
Well, again, if you need to deploy, you can set up static linking in the SBCL build.
7:07:46
fiddlerwoaroof
It would be nice if you could somehow convince dlopen to treat a bunch of memory as a .so
7:08:46
Shinmera
The issue with dynamic linking and all of that is the version mismatch possibilities.
7:09:27
|3b|
you could theoretically include the .so in the directory, but then you still need all of its dependencies (possibly even to libc depending on what you build on and care about running on)
7:09:59
fiddlerwoaroof
Sure, that's why I'd like (ql:quickload :osicat) to load the contents of the dependent .so files into memory in such a way that it can find them again when the image is run
7:10:06
Shinmera
For the C libraries I have in Quicklisp, I always ship prebuilt binaries and try to minimise dependencies as much as possible.
7:10:09
|3b|
probably easier to convince people to give you build scripts for their package manager of choice to include a dep on the shared library
7:10:55
fiddlerwoaroof
Perhaps, one way might be to bundle the libraries as constants and then to "unpack" them to a well-known location on first run
7:10:57
Shinmera
fiddlerwoaroof: If deployment of .so s is your issue, just use something like the Deploy library.
7:11:42
|3b|
including libs (particularly in memory as opposed to just in dir with executable) will annoy people when you include a version with security vulnerabilities (or other bugs) that are fixed upstream in the lib but not in your copy
7:12:37
Shinmera
I find having to dig for the library and installing the required version annoys a lot more people than the problem you outlined.
7:12:47
fiddlerwoaroof
Yeah, but that's one of the well-known trade offs between static-like linking and dynamic linking
7:12:50
|3b|
there are various installers outside normal distro package managers that try to deal with libraries etc
7:13:15
|3b|
maybe one of those would help, hopefully without annoying your users too much when you don't pick the one they like :)
7:13:46
Shinmera
If someone really cares about security / being up to date, they can just remove or replace the included .so file.
7:14:21
Shinmera
Which is something they'd probably know how to do, whereas someone uninitiated knowing to install the correct library and how is much less likely.
7:15:27
Shinmera
Anything to do with deployment is such a pain in the ass I sometimes wish I hadn't gotten into software at all.
7:18:41
fiddlerwoaroof
My common lisp deployment problems are nothing compared to the deployment issues of the gigantic Java/Scala/Groovy/etc. code base I deal with at work
7:20:06
fiddlerwoaroof
One thing I've learned about large software projects is that half-completed attempts to improve code quality are worse than useless
7:30:06
fiddlerwoaroof
Because then someone else comes along behind you trying to get something done, they have to think about both your new way and the old way
7:30:37
fiddlerwoaroof
This is mostly an issue when you have a half-finished architecture change or other wide-reaching changes
7:56:54
Arnot
Thanks! I've used it for a bit, mostly just for working through Practical Common Lisp to be honest