freenode/#lisp - IRC Chatlog
Search
2:08:25
holycow
why i run lake migrate . i get the following error: Symbol "SYSTEM-VERSION" not found in the ASDF/INTERFACE package
2:09:29
holycow
can anyone point to resources online that i can read about HOW roswell and asdf work / interact with each other or the host environment?
2:50:06
ahungry
Are you familiar with nodejs/npm at all? asdf (another system definition facility) is a way to define packages, similar to package.json in node land. Quicklisp which you didn't mention is like npm - the tool to pull in remote dependencies for asdf to load. Roswell is closest to nvm I think (node version manager) - it wraps up all the lisp stuff into a ~/.roswell directory
3:36:58
no-defun-allowed
Maybe offtopic, but what's the best practice if I want to store upwards of 10,000 binary files (addressed by hash of contents)? Filesystems usually don't perform as well as usual when you use directories with that many tiles.
3:45:09
holycow
well, i have run email servers with more files than that but they have all subdivided the attachments into subdirs
3:46:05
holycow
i am just waisting your time, my apologies. i don't have any useful information for you. i just misread your original question and was curious.
3:46:47
no-defun-allowed
You're not wasting my time; I don't even have useless information to work with.
3:53:07
buffergn0me
no-defun-allowed: You can organize the files into sub-directories named after one or more digits in the hash. Should be pretty uniform.
3:54:32
holycow
i would say it does kind of depend on how big your files are and what kind of post processing you need to do. large files will force you into the obvious answer, how many small files will give you some room to play with
5:40:06
flip214
no-defun-allowed: while 2^20 files ain't that many, having them in a single directory is a bad idea - lookup performance and all that stuff.
5:40:39
flip214
I'd suggest keeping 3 or 4 levels of 8-bit divisions, that should bring the last level down to a good number.
5:40:47
no-defun-allowed
(And, well, that SQL can be run over a network trivially, whereas a filesystem is a little less portable.)
5:44:50
holycow
there is an arch page somewhere with red sections all over warning about bugs and features that don't work properly
5:46:22
flip214
no-defun-allowed: I guess something recent will be good enough. I've had a few problems in the 4.<low digit> aera, but none since then.
5:47:11
no-defun-allowed
I do lament fallocate, but my experience with btrfs is that's a load of shite and it's been rock solid.
5:49:51
no-defun-allowed
holycow: And I did read that page five years ago and did an analysis. Still sounds quite stable.
5:51:18
no-defun-allowed
I don't use some of the advanced features like checkpointing or RAID; but is even more off topic.
5:52:40
holycow
i used to replicate datacenters geographically using zfs. i can't go back to anything less and reading that btrfs arch writeup scared teh crap out of me. i could never use anything like that.
5:57:18
holycow
i could never ever use a file system where i've read users loowing entire datasets using simple file system management tools
5:58:43
holycow
yeah, no, you are actually correct. you have to match the solution to your needs and risk comfort level
6:51:34
flip214
COMPILE returns a second and third value for warnings and errors; can I get the conditions that are signalled directly? Something like *debugger-hook*?
9:16:52
phoe
the lisp dialects are similar in the beginning, though guile is a scheme and therefore much more functional-programming-oriented
9:18:08
phoe
once you know the basics of e.g. how S-expressions work, the evaluation model, lexical environments and lambdas, however, you'll be able to apply to any Lisp dialect with none or few modifications
9:21:21
beach
phoe: Also, be careful with that kind of information. As I recall, some of the first Scheme standards did not define its operators in terms of the result of READ, but instead as surface syntax, much like other languages. So then (x . (y)) was not equal to (x y).
9:22:13
beach
Perhaps that makes Scheme different language altogether, and not a dialect of Lisp, which as we know, is not a well defined term.
9:27:30
phoe
beach: you scared me for a second and I checked on all the scheme dialects I have installed on my machine whether defining stuff with cons notation was working
9:29:17
aeth
Scheme just has a lot of undefined behavior, like... the evaluation order. Put side effects in (+ a b c) using begin (their PROGN) and you don't know what order the printing will happen.
9:30:04
aeth
But the worst part is a lot of Schemes just return #<unspecified> or #<undefined> in such cases, e.g. (if #f 42)
9:30:38
aeth
It's IMO way more reliable that CL returns NIL with (if nil 42) even if that's still bad style.
9:31:36
aeth
What I like about everything being an expression in CL is that you don't really get entirely useless things unless someone goes out of their way to return (values)
9:33:01
Shinmera
I've come to really, really appreciate the methodology of always returning /something/ even if an operation is for side effects.
9:34:14
phoe
aeth: and (values) naturally turn into NIL if someone tries to use them anywhere except for multiple-value-* calls
9:34:58
aeth
just multiple-value-call or multiple-value-list iirc. Well, I mean, the latter gives you NIL, but you'd expect (NIL)
9:36:42
aeth
For the most part, Scheme is basically just what you get if you wrap CL up in continuation passing style, though. This, of course, has quite a few implications.
9:54:48
beach
andrzejku: And I also think it is mostly a Common Lisp wrapper around something called "webkit" or something like that.
10:03:16
beach
andrzejku: Are you asking where Lisp is mostly use, and if that happens to be for web stuff?
10:05:40
aeth
Professionally? Probably still AI (but much less important relative to the industry than in 1990) with a bit of web. Hobbyist? The largest niche community is probably gamedev.
10:06:26
no-defun-allowed
I don't think Lisp is one of those languages which is assigned a particular domain (unless you think of Lisp-the-paper Lisp, which is pretty much another mode of computation that is kind of lambda calculus but not really lambda calculus).
10:08:11
aeth
Few languages have one specific niche and no other niche. Few languages aren't used in web programming, too.
10:08:34
aeth
It's one of those things you could find in any new language, just look for the microwebframework that's in the style of Python's Flask or (iirc) Ruby's Sinatra
10:09:47
beach
Please don't assume Lisp is only useful for Animation and Graphics, AI, Bioinformatics, B2B and E-Commerce, Data Mining, EDA/Semiconductor applications, Expert Systems, Finance, Intelligent Agents, Knowledge Management, Mechanical CAD, Modeling and Simulation, Natural Language, Optimization, Research, Risk Analysis, Scheduling, Telecom, and Web Authoring just because these are the only things they happened to list. - Kent Pitman
10:10:07
no-defun-allowed
aeth: (with-hazmat-suit-and-barf-bag (consider-reading #p"http://node-os.com/"))
10:12:35
aeth
(if that was unclear, that was a joke, it was just something that wasn't really listed in the list)
10:17:21
jdz
aeth: Not sure you're also joking, but just in case: https://www.youtube.com/watch?v=8X69_42Mj-g
11:32:42
jcowan
No Scheme standard was ever defined in terms of surface syntax; I've read them all and can say that definitively.
11:33:24
jcowan
AFAIK the only standard that ever was defined that way was DIN Lisp 1.2 (neither Scheme nor CL), and it was one of the points Henry Baker raised in his critique (which is still very interesting).
11:34:21
jcowan
In addition, Guile is as multi-paradigm as CL, if by that you mean it has good support for OO.
11:40:00
heisig
jcowan: You mean GOOPS? It is far from being as useful, fast, and extensible as CLOS.
11:41:12
jcowan
Less extensible, certainly. Useful is a matter of what you want to use it for, and what you expect. Fast, well, I'm sure it's possibly to implement CLOS to run slowly, even in these Latter Days of the Law.
11:44:18
heisig
One can even slow down existing implementations by orders of magnitude, just by adding a single innocent method at the wrong place :)
12:01:45
francogrex
Hi I want to compile a C code (or assembly code) but don't want to install gcc or any other C compiler. is there a lib in CL that lets me compile to an object file? it's won't be lisp code it's C or simply just machine code? does cffi allow?
12:06:12
no-defun-allowed
(defun compile-c-program (input-source output-object) (with-open-file (input input-source) (with-open-file (output output-object) (loop for line = (read-line input nil nil) until (null line) do (write-line line output)))))
12:08:20
beach
francogrex: I have thought for a very long time that C compilers should be written in Common Lisp, as opposed to in C or C++. But I don't think anyone has done it yet.
12:10:52
francogrex
no-defun-allowed: Vacietis yes that seems ok though limited but appears to be in the spirit
12:11:13
beach
By the way, didn't GCC end up using the Boehm-Weiser GC after many years of attempting to avoid automatic memory management?
12:13:45
no-defun-allowed
https://gcc.gnu.org/onlinedocs/gccint/Type-Information.html says there is a garbage collector, but I don't know if it's conservative if it needs a preprocessor to emit some kind of tracing information.
12:16:39
francogrex
yes indeed vacitis is a good proof of concept but very poor to produce anything of use
12:23:00
francogrex
but how about sbcl or any lisp used just as an assembler? from handwritten asm code to object code... that in theory should be easy maybe exists already?
12:24:53
beach
You can probably grab the assembler from any of the major Common Lisp implementations, like SBCL, or CCL, and probably also Mezzano.
12:27:21
heisig
I know of programmers that wrap handcrafted assembler snippets in SBCL VOPs for the very performance critical parts of their code.
12:31:29
flip214
francogrex: https://pvk.ca/Blog/2014/03/15/sbcl-the-ultimate-assembly-code-breadboard/
12:32:00
francogrex
heisig: hmm yes i know vops and i know how to use them, but not interested in that. I would like to output an .o object file. vop doesn't do that not made for it
12:39:33
francogrex
I have a feeling CFFI might be able to do that i mean if one has the opcodes how dfficult would it be to compile them to an object file?
12:43:37
heisig
Yes, one could do that, too. But in 90% of the cases you can get the very same assembler code just by compiling Lisp with the right declarations.
12:44:27
heisig
And I'm trying to boost that to 95% of the cases by writing a proper SIMD interface for SBCL.
12:55:45
beach
francogrex: The hard part, at least for x86 is to select a machine instruction, given a source instruction, and also generating the bytes for that selected machine instruction.