freenode/lisp - IRC Chatlog
Search
19:15:41
fwoaroof[m]
contrapunctus: it's an unpopular opinion, but I prefer to read code every time :)
19:16:33
fwoaroof[m]
High-level documentation is occasionally useful, but I'd usually rather see sample code
19:17:57
fwoaroof[m]
(even when there's documentation: unless you have some way to automatically make sure your documentation is correct, I find that most documentation lies about 6 months after it was written)
19:18:31
jmercouris
the only documentation I give the benefit of the doubt to is docstrings, and mostly only in our codebase
19:20:49
fwoaroof[m]
Yeah, I've been trying to figure out a nice way to specify docstrings in an executable format that can be stringified to something useful
19:21:10
fwoaroof[m]
doctests for sample invocations are one way to go, but I'd prefer to avoid parsing code out of docstrings
19:25:12
jmercouris
source for the function is embedded within a object that represents the documentation
19:31:37
contrapunctus
fwoaroof[m]: maybe it's because I'm not a professional programmer, but if I come back to my own code a few months later, on a program as small as 2k SLOC, I've often forgotten why certain design decisions were taken, or how a certain functionality works (which is why I write explanation docs), or that I've already written the function I'm writing (...reference docs). Many programs have reference docs b
19:31:37
contrapunctus
ut no how-tos, which is a total pain when you just want to get task X done _now._ (...so I write how-to docs).
19:31:43
fwoaroof[m]
I'd like a more structured way to express docstrings: something like #.(stringify '(:function (FOO ARG1 ARG2)) :returns ... :params ...))
19:33:59
contrapunctus
I also find reference docs invaluable in helping me improve API design (names, signatures, return values...)
19:35:08
pve
fwoaroof[m]: could you programmatically append stuff like function signature to the docstrings?
19:35:41
fwoaroof[m]
If you shadowed DEFUN, you could make the docstring portion much more structured
19:36:45
jmercouris
I don't shadow defun, instaed introduce a new constract that emits a defun and a corresponding object relating to its structure
19:36:58
pve
or a separate "signature" macro could both declaim ftype and add something to the docstring
21:47:08
drmeister
Hey folks. Over in #clasp we are developing a new Common Lisp implementation called 'clasp' and an extended version for computational chemistry called 'cando'.
21:48:08
drmeister
We are also developing a web based user interface based on common-lisp-jupyter. Tarn Burton, the developer of common-lisp-jupyter has been adding autocompletion of symbols, auto-indenting, and contextual help.
21:48:09
drmeister
https://www.dropbox.com/s/zwpbuq5qewz3m62/Screen%20Recording%202020-08-10%20at%205.39.20%20PM.mov?dl=0
21:50:51
drmeister
The jupyterlab kernel is getting me really excited - with the autoindenting (put the cursor on a parenthesis and hit tab) you can actually start to write code in the thing.
21:54:47
bjorkintosh
drmeister, is there a 101 intro to computational chemistry around? I know zero about the topic.
22:03:56
fwoaroof[m]
drmeister: cool, I've tried to build clasp locally several times and always get build errors
22:06:27
drmeister
New news - we have clasp working with the Memory Pool System copying garbage collector.
22:08:16
drmeister
bjorkintosh: It's a really big subject. https://www.acs.org/content/acs/en/careers/college-to-career/chemistry-careers/computational-chemistry.html
22:08:40
drmeister
Using computers to simulate the stuff that we are made out of. What could be more noble and fundamental than that?
22:10:10
drmeister
fwoaroof[m]: https://github.com/clasp-developers/clasp/wiki/Road-to-clasp-with-lvm@9
22:10:34
bjorkintosh
However, computational chemistry was not generally thought of as its own distinct field of study until 1998, when Walter Kohn and John Pople won the Chemistry Nobel for their work on density functional theory and computational methods in quantum chemistry.
22:12:47
drmeister
Because there is a lot of C++, C and Fortran code out there that you want to be able to work with.
22:15:54
drmeister
There are challenges as well. Many in my field have invested heavily in Python for scripting.
22:17:46
drmeister
So we are building an entire software stack with a very small team. We are doing everything from low level compiler optimizations to web-based graphical user interfaces.
22:18:46
drmeister
And we are developing applications within it. There are several demos in our docker image: thirdlaw/cando
22:24:55
fwoaroof[m]
drmeister: I've experimented with the opposite approach: using https://github.com/froggey/Iota to compile LLVM bitcode to Lisp
22:26:15
drmeister
I dunno about performant - the devil is in the details and there are a lot of details in a full Common Lisp implementation.
22:26:36
drmeister
But because we use the LLVM C++ API we can keep up with LLVM changes better than anyone.
22:28:13
drmeister
Because the code breaks when they (llvm developers) make changes and they make a lot of changes - and then it behoves me to update our code to keep up to date. I've kept with them from version 3.6 to 9 and I'm anxiously waiting for new changes coming in llvm12 (cross-fingers) that will make it easier to support Common Lisp.
22:30:58
drmeister
It's still very much a C/C++ oriented backend. But new changes that are coming will enable reloading of code in a way that will make it better for a more dynamic language like Common Lisp.
23:39:09
dim
drmeister: do you have a time frame in mind, or a target version number I could check, for clasp image save/load feature? I mean I could then maybe try and compile pgloader with clasp and see if your new GC beats the SBCL one...
23:40:08
dim
(we keep having issues with SBCL GC where we exhaust the heap with pgloader, and I don't know if pgloader is putting too much pressure because of bad code or just because of what we do: data processing) (also Clozure has no trouble with pgloader, as a data point)
23:54:22
drmeister
dim: No time frame but it's a high priority. I would say weeks maybe? Not months.
23:55:14
drmeister
Cando takes 25 seconds to start up on my macbook pro and I despise that that is every persons first impression of the system.
23:59:29
drmeister
The image save/load is to shorten the startup time for cando. Cando is a version of clasp that adds lots of C++ chemistry code and a whole lot of quicklisp systems.
0:02:00
fwoaroof[m]
(I had some significant performance/stability improvements switching to Shenandoah in a JVM application I work on)
0:02:00
drmeister
Do you mean low pause times? Ravenbrook has done work to guarantee that any pause time is less than a user defined time limit.
0:03:31
drmeister
No - I don't think it's that. I don't have a lot of experience running it. I have a great deal of experience programming with it and debugging it.
0:09:54
drmeister
We just added type inference and we are making progress in improving performance - but sbcl still beats us.
0:11:34
drmeister
What I mean is that sbcl has an extremely impressive compiler - it's fast and generates fast code. But we all know that.
1:40:33
edgar-rft
p_l: I'm not entirely sure but I think the GPL says that the devil gets your sould for free.
2:29:04
p_l
edgar-rft: at least you don't need to sell your soul to the devil to make a clean from source compile of SBCL
6:29:12
jdz
dim: My guess would be that SBCL has a fixed heap size, but CCL will dig into RAM until it is exhausted.
6:30:56
jdz
But I also like memory behavior of CCL better than SBCL, although having software with no upper bound to memory consumption is questionable.
6:58:11
aeth
Doesn't SBCL have a fixed default, like 1 GB or something (the manpage says it's platform-dependent)? Depending on what you're doing, you might prefer if it sets the starting heap based on total RAM instead, even though you can't adjust it later. There might be a way. "--dynamic-space-size <megabytes>" if that's launched from a shell script, there's probably something you can put inside of a $() to come up with a reasonable value.