freenode/#lisp - IRC Chatlog
Search
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
12:25:18
zulu_inuoe_
3b: this is way late in the conversation, as far as including the shared library in the image, I played around with that and got the file saved as a lisp vector, then allocated room for it and did all the memory loading steps for it
12:29:02
zulu_inuoe_
It was a fun experiment, but I think at the end of the day I think that any time you're distributing a software package of any significant importance, shared libraries etc are the least of your worries, especially if you're willing/able to package them together with your own package
12:40:37
thetabit
Good morning, just wanted to ask if are any libraries for working with creating linux daemons?
12:42:05
antoszka
thetabit: Creating linux daemons is not really different from launching any other program.
12:42:19
jackdaniel
thetabit: writing daemon definition is something you do for your init script system
12:42:44
antoszka
thetabit: If you need the daemon to listen on TCP sockets, yes, there are libraries going to help you with that.
12:42:59
jackdaniel
CL allows you to produce binaries, you may write service definition file (be it systemd's service, or initd shell script) and put it in appropriate directory
12:43:59
jackdaniel
poor man's daemon is running repl in tmux session and starting whatever you like there
12:58:32
schweers
I have a question regarding packages. I am a little fed up with having to include a certain set of dependencies into every package I create. such as metabang-bind and iterate. I wanted to create a "base" package which depends on said packages and exports all symbols exported from any of its dependencies and of course from "COMMON-LISP". This is the package I created: http://paste.lisp.org/display/353574
12:59:50
schweers
when I try to quickload another package which depends on it, and :USEes it (and nothing else, not even :CL) I get an error claiming that <PACKAGENAME>::NIL is not defined
13:02:55
zulu_inuoe_
My immediate guess would be you need an eval-when to make sure that export loop runs at the right time
13:05:06
schweers
I added (eval-when (:compile-toplevel :load-toplevel :execute) ...) around the loop, didn’t help. Even restarted the lisp process
13:07:14
Bike
well, forget about compile time side effects for a minutes. if you just load the code one form at a time, does the package export everything it's supposed to?
13:11:14
zulu_inuoe
Please tell me there's another lisper that's into Dark Souls. I'd have found my soul mate then
13:12:38
zulu_inuoe
Yeah it'd be finding a niche person (who may not even be a programmer) and teaching them lisp. That's sure to work great
13:13:18
schweers
zulu_inuoe: you might have more luck with non-programmers. they have not yet been conditioned to believe that lisp is evil
13:16:13
dlowe
Quote: It was Bernie Greenberg, who discovered that it was. He wrote a version of Emacs in Multics MacLisp, and he wrote his commands in MacLisp in a straightforward fashion. The editor itself was written entirely in Lisp. Multics Emacs proved to be a great success programming new editing commands was so convenient that even the secretaries in his office started learning how to use it. They used a manual someone had written which showed how to extend Em
13:16:24
schweers
I recently stumbled across the claim that every site is a dating site if you’re creepy enough ;)
13:18:04
zulu_inuoe
schweers: It's actually just interfacing with people, I think. My experience has been that dating sites are some of the worst places to find people to date. More effective to join a group and just mingle naturally
13:18:10
dlowe
as much as I love that anecdote, there should be a disclaimer: "These secretaries were MIT secretaries"
13:18:52
schweers
zulu_inuoe: people seem to often use such sites with the wrong expectations, but that wasn’t my point. I was just joking a little.
13:24:19
dlowe
schweers: I don't know how "especially smart" you are saying, but I'm saying that the sample is probably skewed towards high capacity to deal with 1970s computers
13:25:29
schweers
don’t know that much about MIT, so I don’t know how their secretaries are. or were. I’m too young for such stories ;)
15:35:07
thetabit
How do I format a number as a string and if the number is less than 10 place a zero on the front. I am trying to print datetime so that it will be compliant with mysql datetime
15:37:55
thetabit
I've got something like (format nil "~[00~;01~;02~;03~;04~;05~;06~;07~;08~;09~]" <input>)
15:43:06
dlowe
thetabit: you might want to check out local-time which has formatting for stuff just like this
16:58:36
Fare
jasom: ok, so between 2013 and early 2017 --- I removed the name recently. Is anyone using it directly?
17:53:47
_user
one of them that looks pretty good to me is this one: https://github.com/fukamachi/prove