freenode/#lisp - IRC Chatlog
Search
12:35:50
osune_
jackdaniel: thanks for this information. I've understood by reading the examples in the ecl directory and the manual how to convert from and to cl_object primitive types. But I miss an example of how to pass arrays and structs. I tried to look at EQL but I don't know QT and it's quite big. Can you point me to an example?
12:37:54
osune_
I figured I would compile a lisp plugin file on startup to fasl once and would load the fasl?
12:56:03
osune_
jackdaniel: I could do that but, this would mean I need an compiler on the device. Which I don't have. I'll try to find more examples thanks so far.
12:58:14
jackdaniel
fasl files are (in reality) disguised shared objects (don't confuse that with fasc, which are bytecode)
13:02:18
schweers
do people here actually use template systems in an editor for lisp? like yasnippet in emacs?
13:03:51
osune_
jackdaniel: maybe I'm missing something or we missunderstood: I want to embedd ECL in a embedded C application on ARM. I create my Linux Image with buildroot. Currently I'm assuming ECL will just build fine. Now users can write a plugin for my application by: a) write lisp code which gets just loaded (do I get here an fasl or fasc?) b) write lisp code, compile it on their machine to C with the ECL compiler , which gets compiled to an
13:03:51
osune_
*.so via gcc crosscompiler, the result can be loaded via dlopen on runtime. The goal here is that users of the device don't need access to the crosscompilation toolchain to write and load Plugins. Which eliminates option b)
13:05:14
jackdaniel
if you don't have gcc compiler and you can't compile sources beforehand you end up with fasc files indeed
13:05:56
osune_
which can be compiled from *.lisp files on the embedded device via the embedded ecl code right?
13:07:23
jackdaniel
keep in mind though that bytecode is much slower than native binary (put that on top of the fact that ECL isn't a speed champion anyway *and* that you run on a slow arm box) – so I wouldn't put serious computations in these plugins if I were you
13:15:58
pjb
serious computation = deep loops. Anything a user can write can be interpreted or byte-compiled without ill-effects. Just provide the fast primitives the user wants.
13:16:12
osune_
Thanks for the heads up. The plugin code will process some binary data mostly. I currently don't expect heavy load computations. But I have the option to embedd ECL alongside to luaJit. Even if ECL will prove as an ill fit for the plugins it might come handy for configuration tasks.
14:35:33
Shinmera
shka: If you're confused about anything, or find anything lacking, don't hesitate to let me know
14:39:07
shka
Shinmera: thanks, i will, I will read reader application, it seems to be elaborate example
14:39:27
Shinmera
shka: The tutorial linked in the docs goes through writing an entire application (plaster)
14:40:17
Colleen
shka: A lengthy and in-depth example https://shirakumo.github.io/radiance#a_lengthy_and_in-depth_example
14:53:45
zukunf
what accounts for lisp high latency in this chart?? --> https://danluu.com/input-lag/
14:57:40
lieven
not enough data to tell. If his terminal on the symbolics is a CLIM listener, it is doing far more work than just putting a character on the screen.
15:55:50
shka
is there a way to ensure that lisp file is always loaded from scratch and never cached in FAS?
15:58:41
Shinmera
There's nothing built into ASDF to do this, unless you want to just LOAD everything, in which case there's load-source-op, if I remember correctly.
16:00:32
rumbler31
there certainly are "gotchas" that you can run into if you expect that a file will get recompiled when it will in fact not be
16:02:18
flip214
if it is, have the first source file "/proc/uptime" (which consists of two floats only) and use :serial T
16:08:12
rumbler31
I would say that if you're trying to fight optimized loading, you're actively doing work to throw away a free optimization. which I would be wary of advocating unless you had a good reason, but ^ that /proc/uptime trick is cool
16:28:07
Xach
flip214: that is a very amusing trick! can you tell me more about how you thought of it?
17:13:39
lexa_
I'm looking for a library for parsing some text (Linux device treese to be specific). But most of the libraries mentioned on cliki http://cliki.net/parser%20generator are either dead or in alpha-stage.
17:16:19
beach
lexa_: It depends a bit on the style of parser you want. For combinator parsing that is cl-parser-combinators, and also (I hear esrap).
17:21:32
beach
lexa_: Since the Common Lisp language is not moving, libraries that used to work still do.
17:22:08
lexa_
Sorry, I just came from the world of C/C++, and there if software is not updated to recent changes in OS/Libraries it has a tendency to fall apart.
17:23:08
shka
luckly, in lisp land you can sometimes even run 80s software after few changes to port it to the common lisp standard
17:23:41
pagnol
can this be written more compactly using some special loop-macro foo? https://gist.github.com/anonymous/8eed8669312072879c451f5b3de550a4
17:24:49
pjb
I don't know if it's more compact, but (loop for x in '(1 2 3) for foo = (+ x 2) for bar = (* foo 3) for baz = (+ bar 4) collect baz) #| --> (13 16 19) |#
17:26:13
pjb
the point of mapcar here is that you don't have to introduce variables: just use subexpressions.
17:29:04
shka
shrdlu68: yes, but the point is that language is standardized, so it is not like conservative library that depends on other conservative library will stop working because lisp has changed and dependency was not updated
17:36:09
osune
jackdaniel: I'm sorry but I searched the EQL and ECL examples for how to translate c-structs to lisp forth and back, but in the ECL examples I found nothing and the EQL internals are really not easy to follow for me. I can see how with ffi:clines a struct can be declared, and that with ffi:c-inline I can declare the types of the arguments. But what is still unclear to me is what should be the c-type given to fii:c-inline for the struct
17:36:09
osune
(eg struct foo { int a;};) . Currently I can only imagine to create where I provide explicit conversion functions, where I build a up a c-struct by accessing one slot after the other via cl_slot_value, and vice versa. Can you provide some more hints please?
17:38:13
jackdaniel
if you want to introduce some C structure as a native type to ECL, you need to add it in src/h/object.h (and a few other places) and I doubt you want that. If you want to simply pass it around as an opaque object, check out src/lsp/ffi.lsp. That said, your best choice is to use CFFI which has a well-written ECL backend
17:45:30
osune
So to get this working without CFFI I will need quite some callbacks into C. Thank you, that cleared this up to me.
17:46:14
jackdaniel
osune: you may check out how ECL support is implemented in CFFI as well to find some hitns
17:51:53
osune
I'm on a small embedded ARM system and have to fit with some pretty big binary blobs on a 32MByte SPI Flash.
17:54:48
jackdaniel
oh, then remember to not use sstrip with ECL fasl's and libecl.so (strip is fine though)
17:55:34
jackdaniel
as of cffi, you can get down to 3.3M to have it all in one fasl (dependencies included)
17:57:42
jackdaniel
http://hellsgate.pl/files/500c6b9c there for fasl which may be `load'-ed from ECL
18:05:11
osune
minion: memo for jackdaniel: the :type :shared-object / :static-object is not mentioned in the Documentation? Thanks again for the hints :)
19:33:01
flip214
Xach: well, I already knew about :serial, so I only needed something that "always" changes...
19:33:47
flip214
if it doesn't, do a bind-mount of /proc/uptime _only_ into the chroot/jail/container etc.
19:39:57
Xach
flip214: So it seems this delight is only conceptual, as you can't have an absolute pathname as a :file component...
20:18:30
shrdlu68
varjagg: There will likely be warnings about some of the certificates in the bundle having issues, they'll just be skipped.
20:27:34
shrdlu68
varjagg: You could try using curl's bundle: https://curl.haxx.se/docs/caextract.html
20:33:17
varjagg
shrdlu68: that got me a bit further, now it throws x509-decoding-error from x509-decode
20:36:03
shrdlu68
What site did you try to connect to? Let me try to reproduce it, and get curl's ca bundle as well.
20:47:12
minion
sjl, memo from flip214: thanks a lot for the vlime update.... (but) I'm currently looking at spacemacs.... let's see.
20:47:56
sjl
According to the ADSF manual the only correct value for this slot is (keyword string), but I see systems on Github using all kinds of things there, like:
20:48:57
sjl
Ideally I'd like to be able to specify *multiple* entries there, e.g. :source-control ((:git "github.com/...") (:hg "bitbucket.org/..."))
20:51:38
Xach
If you use something contrary to the ASDF manual, it might stop working and break in the future just out of spite.
20:53:16
Xach
sjl: I dig through system file forms but I don't do anything with source-control, personally.
20:53:40
sjl
Shinmera: I use mercurial because git's ui is a shitshow, but want to still provide a github mirror to accept PRs.
20:54:08
jackdaniel
osune: I mean :shared-library and :static-library, for some complementary doc see: https://common-lisp.net/project/ecl/static/ecldoc/Extensions.html#System-building
20:54:08
minion
jackdaniel, memo from osune: the :type :shared-object / :static-object is not mentioned in the Documentation? Thanks again for the hints :)
20:54:22
sjl
Xach: yeah that's what I figured. I'll just leave it blank, I think. The README lists the repos anyway.
20:54:34
shrdlu68
varjagg: There are non-ascii characters in the ca certificate, which is throwing off a function that tries to distinguish between DER and PEM files by the fact that PEM files are supposed to be ASCII (base64-encoded): https://github.com/shrdlu68/cl-tls/blob/master/src/utils.lisp#L125
20:56:48
sjl
Shinmera: Vim has fugitive which makes it tolerable, but I don't like using a TUI for version control. I want shell commands with a sane syntax.
20:57:33
osune
jackdaniel: uhm what is the difference between https://common-lisp.net/project/ecl/static/manual/ and https://common-lisp.net/project/ecl/static/ecldoc ?
21:00:24
jackdaniel
osune: manual is complete to some degree, ecldoc is wip (but has some chapters expanded)
21:15:27
shrdlu68
varjag: It seems to work with other sites: twitter.com, facebook.com, github.com...
21:21:31
varjag
"Error encountered while checking the certificate status. Details: Response status: unauthorized"
21:22:23
shrdlu68
That's OCSP. The OCSP server responded with "unauthorized", so cl-tls couldn't verify the revocation status.
21:22:54
Xach
ACTION ponders replacing system-index.txt with system-index.cdb for insanely large system-index.txt files
21:47:28
rpg
sjl: The source control metadata aren't used for anything. An issue in ASDF is that on the one hand one wants to encourage people to provide useful information, of just about any sort, but on the other hand, one wishes to provide useful error-checking to help people debug their system declarations.
21:48:02
rpg
Perhaps I should have said "ASDF itself doesn't use the source control metadata for anything."
21:49:24
shrdlu68
varjag: cl-tls validated every single certificate in the chain upto the root found in the trusted CA certificates. In the case of Google, it doesn't find a matching root at the last step of the chain.
21:52:31
shrdlu68
The last certificate presented by the server says it's issued by "Equifax Secure Certificate Authority"
21:55:31
shrdlu68
There's no certificate identifying itself as "Equifax Secure Certificate Authority" in the curl ca bundle, that's why validation is failing.
21:57:32
shrdlu68
It seems most clients are configured to validate up to just below the final level (a "depth" argument). If I do that with cl-tls, it works in this case.
22:00:10
varjag
i could hack that in for my specific case, or are you going to push that to the repo?
22:03:35
shrdlu68
https://github.com/shrdlu68/cl-tls/blob/master/src/x509/validate.lisp#L54 Changing (length chain) to (1- (length chain)) makes it work.
22:15:02
shrdlu68
www.bitstampt.net fails because of OCSP. If you disable revocation checking, it'll work: https://github.com/shrdlu68/cl-tls/blob/master/src/x509/validate.lisp#L84
0:21:18
rpg
I think my colleagues have used MongoDB from lisp, but I'm afraid I don't know what API they used.