freenode/#lisp - IRC Chatlog
Search
0:22:09
pillton
I have been mostly doing documentation for template-function and specialization-store.
0:40:13
p_l
I wonder if better availability of tooling to deliver applications, and maybe user interface, would help there
0:43:11
stylewarning
Also just having more examples of how to make and button up a Lisp app would be good
0:53:09
_death
(don't really need torch, just wanted a quick look at what kind of issues could a torch bindings writer expect)
0:59:00
sjl
does Lispworks cross compile, or do you need to buy N licenses, one per platform you want to deliver an executable for (even if you only develop on one)?
1:36:15
p_l
stylewarning: I've been toying for some time with idea for "application framework" that would abstract done of important parts which aren't "functional requirements" - like paths to app-specific directories, way to distribute easily native libs with your application, etc
1:38:38
p_l
curiously enough, it makes me think of using logical pathnames, at least as argument to merge-pathname
2:55:01
stylewarning
If it’s a tool to help apps developers make apps, they might feel like this is more wacky lisp stuff
2:57:00
p_l
stylewarning: well, quite possibly the end result will be a set of constants to refer to in code
4:34:52
vsync
is there a quick and easy way to see where quicklisp/asdf thinks a system definition lives?
4:40:38
beach
vtomole: I am still working on the CST-to-AST system as part of Cleavir. That one is going to be used in Second Climacs so that I can compile top-level forms at typing speed and report problems by highlighting text in the buffer.
4:41:23
beach
But I am making great progress. It basically seems to work for correct input. Now I need to put in more error checking and a better way of signaling problems.
5:28:43
shka
well, i will ask about this once i will iron out text that does not seems to have sense
5:29:59
beach
shka: Ask anyway. Some members of a particular language group make systematic mistakes that can be corrected.
5:31:00
shka
here it is: https://sirherrbatka.github.io/cl-data-structures/main.html#2071197507043032227
5:34:34
shka
i will correct spelling, and eventually get grammar strait so if you can just tell me if you actually understand this text... that would be great
7:53:55
jackdaniel
rumbler31: if you are still interested: https://gitlab.com/embeddable-common-lisp/ecl/commit/3043dac56b097d95b7a66fea7f71d40de8101453 (and commits around that)
7:54:52
p_l
Shinmera: combination of a) finding a solution to significant part of what you wanted to fix b) general awe in amount of projects, finished or not, you make
7:55:06
dim
Shinmera: how easy is it with deploy to support “--self-upgrade” option, by which I mean give the program a path to fresh sources (with a bug fix) and have it load the new sources at startup (monkey patching itself)?
7:56:46
Shinmera
dim: I've been thinking about a library to handle upgrades, but I can't say when I'll get to it. Might be years.
7:57:06
dim
the difficulty that I had with that is ASDF wanting to reload all dependencies from sources, where the ones in the binary are actually fine
7:57:12
Shinmera
p_l: I see. All I can say is that I have a lot of free time to use and nothing better to do.
7:58:31
Shinmera
dim: What you can do in the interim is compute the action plan to load your system ahead of time, which will give you the order in which to load FASLs. That way you don't need to use ASDF at all.
8:00:18
Shinmera
What I'm saying is: if you know the order in which to load FASLs, all your --self-upgrade option needs to do is, well, load the fasls from a directory in that order.
8:00:19
dim
it took me so much efforts to get to a point where my users can `git clone` and `make` and just use pgloader that I'm very worried about changing the build process
8:00:57
dim
they know nothing about CL, don't have a nother SBCL/CCL installation, don't have any fasl file, nothing
8:01:34
dim
so either they install SBCL, some other bits and then can `git clone` and `make`, or I would like that the integrated compiler within pgloader could be used to monkey patch the binary at startup
8:01:43
Shinmera
But you just said that with --self-upgrade you'd give a path to sources to use for patching
8:03:35
dim
I see, just for upgrading... but what's the binary compat' of FASL from a platform to another?
8:03:36
Shinmera
Either way, the point is: you can compute the load order ahead of time, and then use that to load your sources without ASDF.
8:04:50
Shinmera
Adding a step to check for fasls and otherwise use compile-file first wouldn't be that big of a deal either.
8:06:27
dim
you can see my earlier failed attempts at https://github.com/dimitri/pgloader/blob/master/src/hooks.lisp
8:11:21
Shinmera
Here's a quick idea of what I'm talking about: https://plaster.tymoon.eu/view/672#672
8:11:50
Shinmera
If you wrangle the pathnames a bit you can get a nice and clean list of source files that are necessary to load to get your system going.
8:12:05
Shinmera
You can then save this list in your binary, and use it to load from a directory at startup.
8:24:16
Shinmera
It's a frequent source of frustration, since it makes it hard to analyse the files without executing code.
9:13:52
forb291
:) ok :) I am trying to use it directly from an sbcl repl without going through the install. Is it possible? Currently, just doing (ql:quickload :pgloader) stops in trying to find the mysql libraries. But I only want it to load some csv into postgres
9:14:31
dim
I didn't work on alternative dependencies yes, so you need the full set of supported drivers at the moment
9:15:54
forb291
hmm it doesnt. maybe I will cpy it to local-projects and install the libs myself. I wonder is it easy to map the lisp api from the command line documentation?
9:17:08
dim
the lisp API isn't a straight map, but https://github.com/dimitri/pgloader/blob/master/src/api.lisp should get you started
9:20:09
forb291
ok, I ll get to it. Thanks a lot for the project. Btw, I tried to find a donation link, but I couldn't. Is there any?
9:26:15
schweers
does anyone know if using return-from to escape deep recursion (a few hundred calls deep) is particularly bad for performance?
9:29:05
beach
schweers: I doubt it. It probably removes all stack frames with no unwind-protect by just adjusting the stack and frame pointers. That's how I would implement it anyway.
9:30:30
schweers
I was wondering if the presence of return-from might make function calls particularly expensive
9:32:22
beach
Having said that, I don't actually know what SBCL does; only how I would do it myself. I also know that the SBCL maintainers are smart people, so I am guessing that they would have come up with solutions at least as good as mine.
9:35:20
minion
lisppaste: lisppaste is an IRC bot that runs under the nickname "lisppaste" and can be used (only for the #lisp IRC channel!) at http://paste.lisp.org/new/lisp - or http://paste.lisp.org/ for other destinations
9:36:57
schweers
the code is not very pretty and you can ignore time-into *augmenting-path-time*, its for debugging
9:37:54
schweers
out-edges is pretty much constant-time (well, it depends on how many edges a node has, which is typically only a few)
9:41:09
schweers
if the input is large (I‘m testing it on ~68k vertices) a call to AUGMENTING-PATH usually takes minutes
9:41:46
schweers
for some reason directly profiling did not occur to me, no. Don‘t know what made me not do that.
9:47:27
scymtym
not very important, but (time (with-profiling () …)) can eliminate a few things from the profile
9:47:32
scymtym
unless the type of the LEVELS array is known somehow, accessing its elements and then doing arithmetic with them is expensive
9:48:51
schweers
scymtym: expensive enough to explain why it takes more than a weekend to run on 68k vertices?
9:49:55
beach
schweers: That kind of execution time means some super-linear behavior. It could be intrinsic in your algorithm. I don't fully understand it.
9:50:05
scymtym
i can't say anything in terms of your code, but the difference can certainly be an order of magnitude
9:51:23
schweers
I’ll try to isolate a call to augmenting-path so it will be called once instead of really often in order to do some statistics on it after lunch
9:51:46
schweers
beach: yes, but the algorithm only follows edges which descend costs to a set of destination edges
9:54:02
schweers
normally the algorithm is quadratic to nodes, but I use a variant which should be faster
9:55:49
scymtym
the way PATH is updated with the return value of the recursive call makes the code hard to understand
9:57:19
schweers
scymtym: I know, its not exactly the most beautiful code I‘ve ever written. Its a port from C++ code
10:00:33
forb291
dim it works perfectly, after installing the freetds file. Since the options I need to feed to pgloader are scattered in different places, I used cl-emb to make a command text with my source, target, options, etc, and then feed it to run-commands api. I dont know if I need a true api, since this is very flexible. anyway thanks again for the info
10:02:49
forb291
the only thing I will try is modularize the loading of dependencies, so they are not all needed to load pgloader
11:03:41
Josh_2
When talking about condition handling, non-local transfer of control means control being moved outside of the current function?
11:20:00
jdz
Josh_2: in case of condition handling non-local transfer of control is when the control is explicitly transferred out of the handling construct.
11:49:27
schweers
does sbcl use :type specifiers in DEFCLASS in its type inferencer? or do I have to manually specify the types of slots again in code that uses them?