<jmercouris>
it seems to be some sort of compatibility layer?
ljavorsk__ has joined #lisp
<jackdaniel>
phoe put a lot of effort to have PLN in CCL, so I would be surprised if he did something wrong in this compat library
<jackdaniel>
that said I have not used it
<White_Flame>
a spec-compatible way would be to (defpackage axl (:use :alexandria) (:export ...))
<White_Flame>
or some equivalent thereof. You can iterate the public symbols of alexandria and reexport them programmatically
<jmercouris>
interesting
<White_Flame>
but, this is literally what package local nicknames are for, so I'd recommend using the newfangleys
<jackdaniel>
White_Flame: that works until someone else wants to use axl for axiom-less package
<jackdaniel>
(in the same image)
<White_Flame>
yep
vaporatorius has joined #lisp
vaporatorius has joined #lisp
vaporatorius has quit [Changing host]
<jmercouris>
Wouldn't you have thave the same issue with package nicknames?
<jmercouris>
I don't see how it would be avoidable
<jmercouris>
are you saying it would be somehow different because there'd be a compiler warning emitted or something?
<jackdaniel>
that's why package-local-nicknames were invented
<jmercouris>
Oh, I get it now
<jackdaniel>
package-local-nicknames are nicknames stored in *your own* package
<jmercouris>
that would make a package that conflicts in the image
<White_Flame>
yeah, they're not the CLHS nicknames
<jmercouris>
wherewas the nickname would be local to the package
<jmercouris>
I get it, yes
<jmercouris>
it's all in the name :D
<jackdaniel>
so when you say bam:foox when you are in #:your-package, then reader first looks inside #:your-package for bam, only after that in a global namespace
ljavorsk__ has quit [Ping timeout: 245 seconds]
<jmercouris>
right
stzsch has quit [Ping timeout: 246 seconds]
vaporatorius has quit [Ping timeout: 240 seconds]
stzsch has joined #lisp
pkkm has joined #lisp
iovec has quit [Quit: Connection closed for inactivity]
libertyprime has joined #lisp
zdm has quit [Remote host closed the connection]
scymtym has joined #lisp
<no-defun-allowed>
Is there anything like conspack (though the format doesn't have to be compatible) that supports bignums?
ljavorsk__ has joined #lisp
<no-defun-allowed>
hu.dwim.serializer fits that pretty well, never mind.
lxbarbos` has joined #lisp
jmercouris has quit [Ping timeout: 268 seconds]
lxbarbosa has quit [Ping timeout: 276 seconds]
ljavorsk__ has quit [Ping timeout: 250 seconds]
ljavorsk__ has joined #lisp
prite has joined #lisp
jmercouris has joined #lisp
Duuqnd has quit [Remote host closed the connection]
Duuqnd has joined #lisp
ljavorsk__ has quit [Ping timeout: 245 seconds]
m00natic has joined #lisp
igemnace has quit [Quit: WeeChat 2.6]
notzmv has quit [Ping timeout: 240 seconds]
prite has quit [Ping timeout: 240 seconds]
ym has joined #lisp
Duuqnd has quit [Remote host closed the connection]
Duuqnd has joined #lisp
Ricchi has quit [Remote host closed the connection]
clintm has joined #lisp
EvW has joined #lisp
manualcrank has joined #lisp
jonatack has quit [Ping timeout: 268 seconds]
scymtym_ has joined #lisp
scymtym has quit [Ping timeout: 250 seconds]
ljavorsk__ has joined #lisp
cosimone has joined #lisp
malaclyps[m] has quit [Remote host closed the connection]
keep-learning[m] has quit [Read error: Connection reset by peer]
Jachy has quit [Read error: Connection reset by peer]
shaakyamuni[m] has quit [Read error: Connection reset by peer]
no-defun-allowed has quit [Remote host closed the connection]
katco has quit [Write error: Connection reset by peer]
LdBeth has quit [Read error: Connection reset by peer]
hiq[m] has quit [Read error: Connection reset by peer]
Gnuxie[m] has quit [Read error: Connection reset by peer]
iarebatman has quit [Read error: Connection reset by peer]
fynzh[m] has quit [Read error: Connection reset by peer]
djeis[m] has quit [Remote host closed the connection]
dtw has quit [Write error: Connection reset by peer]
eriix[m] has quit [Read error: Connection reset by peer]
nonlinear[m] has quit [Write error: Connection reset by peer]
sciamano has quit [Write error: Connection reset by peer]
Godel[m] has quit [Write error: Connection reset by peer]
liambrown has quit [Write error: Connection reset by peer]
mstdnuser[m] has quit [Read error: Connection reset by peer]
akanouras has quit [Write error: Connection reset by peer]
munksgaard[m] has quit [Remote host closed the connection]
ljavorsk__ has quit [Ping timeout: 245 seconds]
v0|d` has quit [Ping timeout: 240 seconds]
dvdmuckle has quit [Ping timeout: 240 seconds]
dvdmuckle has joined #lisp
Harag has joined #lisp
<Harag>
has anybody got smartparens and ergoemacs working together nicely? what is the trick?
akanouras has joined #lisp
cosimone has quit [Quit: Terminated!]
jmercouris has quit [Remote host closed the connection]
<Shinmera>
that's a question for #emacs, not here.
<thijso>
Does anyone have any idea why my app crashes on startup after I include bordeaux-threads in my depends-on list in my .asd? That is literally the only thing that's changed. I'm thinking there might be some eval-when stuff in bt that is breaking stuff? Is that possible?
<Bike>
crashes how?
<jackdaniel>
I think that more people would have the issue with bt if it did something underhanded
<jackdaniel>
(it is a common dependency)
<jackdaniel>
could you show the asd file and describe how it crashes?
<Shinmera>
also what implementation, etc.
<thijso>
Bike: jackdaniel: it's an app on my android phone, built with EQL5-android
<thijso>
Bike: the app just closes after opening for a moment
<thijso>
In the (minimal) debug logging I've found, it says the process has died
<jackdaniel>
(let me clarify: you only add bt dependency, you are not creating any threads etc?)
<thijso>
jackdaniel: yep, the only change is adding ":bordeaux-threads" in my depends-on list in my .asd
<thijso>
So, somehow that is doing something on app startup, but I have no clue what
Inline has joined #lisp
<jackdaniel>
and when you load system with :verbose t, when exactly does it crash?
FreeBirdLjj has quit [Read error: Connection reset by peer]
<jackdaniel>
s/load system/load the system/
<jackdaniel>
can you load only bordeaux-threads without crash?
salinasc has quit [Ping timeout: 250 seconds]
<thijso>
The trouble is that that's not an option. The system is built such that lib is created for the app, which is loaded through some java/c++ hackery...
<thijso>
Might be that the problem is in there
<thijso>
My biggest challenge is trying to figure out how to properly debug this
<thijso>
But you do have a point, jackdaniel. I have an app built with the same stuff, where I get a repl where I should be able to quickload stuff. Lemme see what happens if I try bt there
<jackdaniel>
I can imagine that your particular android does not cover full pthread api
<jackdaniel>
(I remember they have missed many functions)
FreeBirdLjj has joined #lisp
<thijso>
I had it working previously, so I'm positive it *does* work
<thijso>
I'm trying to update some versions, ECL among others, but it's a very fragile system, so stuff breaks easily...
<thijso>
But in this case I have a 'working' app (does nothing, just starts and shows a page) without bt, and one that dies *with* bt...
<thijso>
I seem to be able to quickload :bt on the repl app... So I'm lost...
<jackdaniel>
maybe your toolchain and target system do not match?
<thijso>
I'm building with and without exactly the same, so that's not it, jackdaniel
<jackdaniel>
can you attach gdb to your process?
ljavorsk__ has quit [Ping timeout: 250 seconds]
<thijso>
Uhm... probably?
<thijso>
Not sure how that works on an android phone
<thijso>
probably something with adb and such
<thijso>
I guess it's google-time...
<jackdaniel>
if you have root privigiles you may install ordinary gdb ; but that is outside the scope of this channel
Lord_of_Life has quit [Ping timeout: 264 seconds]
ljavorsk__ has joined #lisp
<thijso>
ah, didn't know that, jackdaniel
FreeBirdLjj has quit [Ping timeout: 264 seconds]
FreeBirdLjj has joined #lisp
jmercouris has joined #lisp
ravenousmoose has joined #lisp
ljavorsk__ has quit [Ping timeout: 245 seconds]
cosimone has joined #lisp
catalinbostan has joined #lisp
cosimone_ has quit [Read error: Connection reset by peer]
<p_l>
there's gdb-server on the device
<p_l>
thijso: ^
<p_l>
also, the EQL5 lib will be loaded into a process that already runs several threads, beware of that before assuming that you have single-threaded process
cosimone_ has joined #lisp
cosimone has quit [Ping timeout: 245 seconds]
bitmapper has quit [Ping timeout: 246 seconds]
cosimone_ has quit [Read error: Connection reset by peer]
Josh_2 has quit [Remote host closed the connection]
cosimone has joined #lisp
cosimone has quit [Client Quit]
warweasle has joined #lisp
schweers has quit [Ping timeout: 250 seconds]
rumbler31 has joined #lisp
EvW has joined #lisp
rumbler31 has quit [Ping timeout: 245 seconds]
eSVGDelux has joined #lisp
varjag has quit [Quit: ERC (IRC client for Emacs 25.2.2)]
prite has quit [Ping timeout: 240 seconds]
FreeBirdLjj has quit [Ping timeout: 240 seconds]
FreeBirdLjj has joined #lisp
monokrom has joined #lisp
nika has joined #lisp
<thijso>
p_l: thanks. And yeah, it's definitely not single threaded, even before adding bt
jmercouris has quit [Remote host closed the connection]
jprajzne has quit [Quit: Leaving.]
smazga has joined #lisp
doublex has quit [Ping timeout: 245 seconds]
smazga has quit [Read error: Connection reset by peer]
smazga has joined #lisp
motte has quit [Ping timeout: 252 seconds]
jonatack has quit [Quit: jonatack]
motte has joined #lisp
Oladon_wfh has joined #lisp
raghavgururajan has joined #lisp
motte has quit [Ping timeout: 240 seconds]
count3rmeasure has joined #lisp
ravenousmoose has quit [Ping timeout: 240 seconds]
jonatack has joined #lisp
bitmapper has joined #lisp
motte has joined #lisp
dale_ has joined #lisp
dale_ is now known as dale
lucasb has quit [Quit: Connection closed for inactivity]
doublex has joined #lisp
raghavgururajan has quit [Read error: Connection reset by peer]
red-dot has quit [Quit: Going offline, see ya! (www.adiirc.com)]
makomo has joined #lisp
joast has quit [Quit: Leaving.]
frgo__ has quit [Remote host closed the connection]
bitmapper has quit [Ping timeout: 245 seconds]
prite has joined #lisp
gareppa has joined #lisp
cosimone has joined #lisp
gareppa has quit [Remote host closed the connection]
<jasom>
p_l: I think you are right on the reference in the function header. The various addressing modes of the x86 confuse me as I cut my teeth on load/store architectures.
FreeBirdLjj has quit [Remote host closed the connection]
bitmapper has joined #lisp
red-dot has joined #lisp
count3rmeasure has quit [Ping timeout: 240 seconds]
<p_l>
It's very load/store, even. Just that with a constant in old generation, you can bypass referencing symbol list, and store pointer in the area of function constants
joast has joined #lisp
flamebeard has quit []
lxbarbosa has quit [Ping timeout: 246 seconds]
hhdave has quit [Quit: hhdave]
m00natic has quit [Remote host closed the connection]
doublex has quit [Ping timeout: 240 seconds]
vaporatorius has joined #lisp
vaporatorius has quit [Read error: Connection reset by peer]
vaporatorius has joined #lisp
vaporatorius has quit [Read error: Connection reset by peer]
scymtym has quit [Ping timeout: 250 seconds]
Lord_of_Life has joined #lisp
gareppa has joined #lisp
clothespin has quit [Ping timeout: 265 seconds]
gareppa has quit [Remote host closed the connection]
shka_ has joined #lisp
yoeljacobsen has joined #lisp
gareppa has joined #lisp
Lord_of_Life has quit [Ping timeout: 245 seconds]
Lord_of_Life has joined #lisp
matijja has joined #lisp
vaporatorius has joined #lisp
frgo has joined #lisp
karlosz has joined #lisp
catalinbostan has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
salinasc has joined #lisp
raghavgururajan has joined #lisp
bitmapper has quit [Remote host closed the connection]
clothespin has joined #lisp
vaporatorius has quit [Read error: Connection reset by peer]
pkkm has quit [Ping timeout: 245 seconds]
nostoi has joined #lisp
nirved has joined #lisp
bitmapper has joined #lisp
warweasle has quit [Quit: rcirc on GNU Emacs 24.4.1]
raghavgururajan has quit [Remote host closed the connection]
makomo has quit [Quit: WeeChat 2.4]
pkkm has joined #lisp
hh47 has joined #lisp
dddddd has joined #lisp
doublex has joined #lisp
raghavgururajan has joined #lisp
yoeljacobsen has quit [Ping timeout: 276 seconds]
nirved has quit [Quit: Leaving]
Bike has quit [Remote host closed the connection]
cosimone has quit [Quit: Quit.]
Bike has joined #lisp
cosimone has joined #lisp
cosimone has quit [Client Quit]
MichaelRaskin has joined #lisp
gareppa has quit [Quit: Leaving]
mindCrime_ has joined #lisp
hh47 has quit [Ping timeout: 245 seconds]
cosimone has joined #lisp
dale has quit [Read error: Connection reset by peer]
karlosz has quit [Quit: karlosz]
zdm has quit [Remote host closed the connection]
dale has joined #lisp
EvW has quit [Ping timeout: 264 seconds]
vlatkoB has quit [Remote host closed the connection]
mindCrime has quit [Ping timeout: 268 seconds]
prite has quit [Quit: Konversation terminated.]
prite has joined #lisp
ggole has quit [Quit: Leaving]
EvW has joined #lisp
X-Scale has joined #lisp
eSVGDelux has quit [Ping timeout: 264 seconds]
_jrjsmrtn has joined #lisp
__jrjsmrtn__ has quit [Ping timeout: 240 seconds]
salinasc has quit [Ping timeout: 276 seconds]
buffergn0me has joined #lisp
nostoi has quit [Quit: Verlassend]
hh47 has joined #lisp
seok has joined #lisp
<seok>
hi everyone
sauvin has quit [Read error: Connection reset by peer]
salinasc has joined #lisp
lucasb has joined #lisp
seok has quit [Ping timeout: 260 seconds]
cosimone has quit [Quit: Quit.]
varjag has joined #lisp
<buffergn0me>
hello
yoeljacobsen has joined #lisp
xkapastel has quit [Quit: Connection closed for inactivity]
gareppa has joined #lisp
xkapastel has joined #lisp
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
bitmapper has quit [Ping timeout: 240 seconds]
clothespin has quit [Ping timeout: 264 seconds]
krwq has joined #lisp
raghavgururajan has quit [Read error: Connection reset by peer]
<krwq>
With Lisp I always try to make my code as succint as possible and I also try to do that at work when working with other languages. Ocassionally though I find people complaining that shorter code is allegedly harder to read and I'm being asked to use the more verbose version. *sigh*
scymtym has joined #lisp
nika has quit []
doublex has quit [Ping timeout: 245 seconds]
<shangul>
beach, Sorry I didn't know that and I thought you have a bot or something which extracts title of the given url.
cosimone has joined #lisp
yoeljacobsen has quit [Ping timeout: 268 seconds]
cosimone has quit [Client Quit]
samlamamma has joined #lisp
<shangul>
https://notabug.org/farooqkz/msim <= Simulates the mafia party game with the role fool included. written in Common Lisp and uses sb-thread for multi-threading.
doublex has joined #lisp
cosimone has joined #lisp
Ven`` has joined #lisp
<LdBeth>
krwq: try APL
<krwq>
LdBeth: anything I should be aware of before I look? :)
clothespin has joined #lisp
<krwq>
LdBeth: do you generate the code with that or what? We currently mostly add features to existing code base which might make it a bit harder if that's the case
<_death>
shangul: cool.. one thing you should know is that CASE does not evaluate the keys, so it should be (case citizen (f ...) ...), not ('f ...)
<LdBeth>
krwq: APL has been famous/infamous for one liners,but the original guide of it advocates structured programming and to be more verbose when you can
<shangul>
_death, Thank you! I'll work on it and read more about it tomorrow.
<krwq>
LdBeth: I'll take a look one day since I've heard about this language couple of times already from different source
pkkm has quit [Ping timeout: 245 seconds]
gareppa has quit [Remote host closed the connection]
<aeth>
CL vs. APL is a bit of an extreme in that in CL you want names-like-this and with APL you want α instead.
<aeth>
At a token level, it's possible that you could have the same level of conciseness/verbosity, but at a character level, CL will seem more verbose... but I personally find that more readable than trying to decode some cryptic symbol or letter
<Ober>
you need utf8 support though... rules out LW
<aeth>
consider (and this is made up since I don't know APL) e.g. (calculate-foobar 1 2) vs. f 1 2
<buffergn0me>
Ober: Lispworks does not support UTF-8 in source code?
<Ober>
yeah April is what I was thinking of
<aeth>
An APLer would prefer the latter, a Lisper will prefer the former since you know it's foobar, not just f
<Ober>
buffergn0me: in cli it doesn't. in the gui it seems to work
matijja has quit [Ping timeout: 245 seconds]
<aeth>
Ober: I'd say that the vast majority of meaningful Quicklisp libraries probably won't work in LispWorks because no one tests in LispWorks and it only takes one dependency-of-a-dependency-of-a... to not support LW properly to break the whole thing in LW
<aeth>
So that wouldn't really be a concern in choosing a library imo
<buffergn0me>
Ober: I need to get personal edition and test with Parenscript. I started using ₁ ₂ etc subscripts in variable names
<Ober>
yeah if in the gui, it works. 7.3 will have utf8 in the cli, or so support says
<Ober>
works fine in acl
<samlamamma>
aeth: dependency-of-a-dependency-of-a... can just be called a transitive dependency :P
<buffergn0me>
Ober: I test in Allegro now that someone pointed out it was not working in modern mode.
<aeth>
My personal view of LW and ACL support in libraries is... if they want me to test in their implementations, they can pay me, or at least give me a free license to their commercial versions for library testing purposes only. Otherwise, I'll only support the FOSS implementations because I can actually test in them.
<krwq>
buffergn0me: this is awesome, will make it much easier to work with
<buffergn0me>
Ober: It seems that for Allegro you need to run tests in two images: CL and modern. Also CLISP has modern mode, I have never tried it
<Ober>
alisp and the other one yeah
<aeth>
Personal editions won't work for me. Afaik, they're 32-bit only... in 2019. I don't support 32-bit at all. My programs should in theory run in 32-bit, but with tons of extra consing (e.g. every single float) and with a bunch of 64-bit number arrays now as T arrays and 64-bit numbers now as fixnums.
<buffergn0me>
krwq: The nice thing is that it was an easy fix, and pointed out an underlying problem in the way I was handling case. Going to test everything in Allegro modern mode from now on.
<aeth>
Also much lower limits since the limits are usually based on positive fixnums.
<buffergn0me>
aeth: Roswell automatically installs Allegro trial edition for you
<aeth>
My code should work in a "modern mode" though because I do not (or at least should not) assume read table case. It's not that hard to not hardcode "FOO", you just do (symbol-name '#:foo) to get "FOO"
vms14 has joined #lisp
gareppa has joined #lisp
<buffergn0me>
aeth: That's what I thought…
<aeth>
buffergn0me: it says right here that it's a 32-bit edition, as a warning that Ubuntu is now making it harder to install 32-bit applications. https://franz.com/downloads/clp/survey
<aeth>
buffergn0me: And as I said, I do not support 32-bit x86 implementations because there are too many little inconveniences, even though in theory it should still run, just slower and with more consing.
<aeth>
buffergn0me: running a test on a 32-bit implementation would be supporting a 32-bit implementation!
<buffergn0me>
aeth: And that's one reason I switched from Ubuntu to Debian
pkkm has joined #lisp
<buffergn0me>
aeth: I disagree with not supporting 32-bit. Really defeats the purpose of Common Lisp as a portable backward-compatible language. I still have tons of 32-bit x86 hardware, and will probably at some point need to do embedded work on a 32-bit system.
<aeth>
My view is that there is no reason to use 32-bit x86 in 2019, and it's becoming increasingly hard to do so, so I'm not going to encourage people by testing on 32-bit implementations, making maintaining a library then transitively having to support all that increasingly difficult 32-bit mess.
<aeth>
Well, at least for the domain I use CL for. Obviously, there's embedded.
<aeth>
buffergn0me: The problem is that I make assumptions, such as that single-float is nonconsing (no workarounds necessary) and double-float is normally consing (so I need to do tricks to let an implementation not cons them, like use arrays/structs that hold double-floats)
<aeth>
And the latter is sufficiently difficult that I'm simply not going to write single-float code in that much harder style
<aeth>
With the sort of embedded that's still using 32-bit, you probably won't have a FPU at all, though
<buffergn0me>
aeth: But does you code break, or just work slowly on 32-bit?
<aeth>
buffergn0me: Almost certainly the latter. Arrays of (unsigned-byte 64) and (signed-byte 64) should be T, and tricks to make those integer types nonconsing won't work because they'll be bignums, and single-float will cons, etc.
<aeth>
buffergn0me: But to even test it on a 32-bit implementation is to support a 32-bit implementation
<aeth>
buffergn0me: Although it's possible that there's a sufficiently large array somewhere that will make it not work, anyway
<aeth>
The ones that (indirectly) use CFFI might have broken assumptions, though. In transative dependencies.
shka_ has quit [Ping timeout: 265 seconds]
<aeth>
I tested my game engine in SBCL, CCL, and ECL. It runs in all three (unless I introduced a recent bug), where CCL needs the most special cases because it has weird (but allowable) rules with constants that require me to eval-when the constants. Also some weird rules with numerical tower conversion iirc.
<aeth>
It runs very slowly in ECL, and the workaround that makes it run faster for some reason breaks cl-sdl2 now, so I don't run it in ECL very often at the moment, at least until I replace cl-sdl2.
samlamamma has quit [Ping timeout: 265 seconds]
<aeth>
Every other implementation is broken through s ome dependency already. So the issue is sort of not my problem.
<aeth>
s/s ome/some/
<vms14>
aeth: what kind of game?
<vms14>
and what about your perl/lisp project?
<vms14>
also I'm curious about hash tables performance vs alists/plists in common lisp
<vms14>
I saw in elisp plists/alists have better performance until 20 items
<Ober>
or thread safe hash-tables
<aeth>
vms14: I don't have a perl/lisp project, I just said that it should be theoretically possible to implement Perl on top of a language framework and cl-ppcre, depending on how pc the ppcre are. I do have a work-in-progress Scheme that could eventually be generalized into a language-creating framework
<vms14>
I know I shouldn't worry about performance
<vms14>
but I'm just curious
<vms14>
I really love plists
<buffergn0me>
aeth: And that's why I took a detour to work on test automation last month. Not a lot of people look at cl-test-grid, and it would be nice to make it easy for anyone to quickly test their code and its dependencies on their local machine on multiple implementations
<vms14>
symbol plists*
<vms14>
and I saw a post about "perfect" hash tables
<aeth>
vms14: I don't really do hash tables vs. plists. That's quite a micro-optimization. If I'm using a plist, it's probably being parsed sequentially over every item, anyway, so random access doesn't really matter. And if I'm using a hash-table that's because that's what I semantically want
<vms14>
yeah I know we should use the most appropiate data for our uses
<vms14>
and not worry about performance
<vms14>
until you have troubles
<aeth>
buffergn0me: this is graphics (via FFI) stuff, they're not easily tested at all
gareppa has quit [Quit: Leaving]
<aeth>
I mostly test the engine by loading up example programs and checking the framerate, since those program should execute every major code path. And if they're rendered incorrectly it's very obvious.
<aeth>
Obviously, some portions are unit testable, but that's usually portions where I can not-invented-here the whole stack instead of relying on FFI
gravicappa has quit [Ping timeout: 240 seconds]
<buffergn0me>
aeth: Good point. But a lot of libraries are automatically testable, they just are not being tested regularly across some implementations.
<aeth>
buffergn0me: For me, if I wanted to test on more than just SBCL, I would just do that through running gitlab CI on push. I just need a Docker image that contains more than just SBCL, and a new entry-point .lisp file that loads the tests through ASDF.
<aeth>
At the moment I just do: sbcl --non-interactive --load ~/quicklisp/local-projects/zombie-raptor/tests/test-script.lisp
<aeth>
And I don't even need a separate file since I already #+sbcl in that file. I just need a separate line in my .gitlab-ci.yaml, assuming I'm using a Docker image that also comes with that CL implementation
<buffergn0me>
vms14: Here is one thing I want to try: adjustable vectors instead of plists. That should give a nice speedup for a lot of applications. Also have it self-organize (see 6.1 of Knuth vol. 3)
<aeth>
Oh, and that file would be very short (a handful of lines) if fiveam actually did what I wanted, so really, the more portable solution would be to replace/fork fiveam or make a mini-library with the wrapped part of fiveam that does what I want.
<buffergn0me>
aeth: Ok, but then how do you debug test failures? You still need the implementation on your local machine.
<aeth>
buffergn0me: I use roswell for implementations that my distro does not ship with, or to get newer versions of implementations that my distro does ship with. (I also compile SBCL from source sometimes for an even newer version.)
<aeth>
buffergn0me: I actually kind of hate roswell because it's buggy and full of C. roswell assumes that it's being used to bootstrap CL and the host has no CL at all. A better tool would be to assume there's a host CL, just not literally every CL ever.
techquila has joined #lisp
<buffergn0me>
aeth: Yes, and Roswell is a lot easier to use than setting up Muppet Jenkins Gitmash Bokbok whatever is the latest automated testing monstrosity that really should be a simple git hook
krwq has quit [Remote host closed the connection]
mindthelion has quit [Ping timeout: 240 seconds]
<aeth>
buffergn0me: Any replacement tool should probably use docker and replace daewok/lisp-devel so it uses the exact same implementations developer-side and CI-side.
<aeth>
buffergn0me: I use Gitlab CI. Gitlab comes with CI so I never had to worry about whatever's trendy. It is a weird YAML file, but once it's written, it's written.
<buffergn0me>
aeth: Ok, how do I run Docker on OpenBSD? Docker is a "solution" that makes the problem worse.
<vms14>
"once it's written, it's written" xD
<vms14>
I liked it
vydd has joined #lisp
vydd has joined #lisp
<buffergn0me>
aeth: Roswell does the right thing with C. It is the lowest-common denominator and most portable approach that bootstraps. Definitely better than trying to use shell scripts like cl-launch and CIM tried to do
<aeth>
buffergn0me: I didn't say it has to use Docker exclusively, but it has to use it in its path if you want to test with the same implementations client and server side, at least potentially.
<aeth>
buffergn0me: Roswell absolutely does the wrong thing with using C. It is the right thing if you are bootstrapping on a system that does not have CL and you're using it as your only CL. Portacle does this better, if you need to, but on Linux it's just in your distros already if you have a decent distro.
<Ober>
roswell seems much slower for simple scripts
<aeth>
buffergn0me: The secondary task that Roswell tries to solve is if you already have several CL implementations, but not literally every CL implemntation, and you want to run tests. Because Roswell's primary goal is bootstrapping from C, it makes its secondary (testing) goal much harder and buggier
<aeth>
buffergn0me: For instance, it uses whichever most recent CL implementation was used as the implementation that does the driving of the CL scripts iirc, so it's a non-deterministic state machine, unless you always specify the implementation before doing commands. Iirc.
<aeth>
Plus, it at least for me has a bunch of random crashing bugs, typical of C applications, which you simply wouldn't get with a pure-CL-driven testing system.
<aeth>
Roswell also doesn't provide binaries for everything (e.g. Clasp) and last time I tried to compile Clasp, the weird environment Roswell sets up was sufficient for that compilation to fail, cryptically, after like 10 minutes.
<aeth>
You're definitely not going to want to compile a huge C++ application in your test framework which is initialized to a fresh environment every run!
<buffergn0me>
aeth: Neither Clasp nor MKCL ever finished building for me when I tried installing them. I do not want to support MKCL anyway.
<aeth>
fNow, maybe there's a better version of roswell and my complaints are out of date, but I rarely recompile it, because C is hard to work with. If it was pure CL, it'd just be in Quicklisp, and easy to work with.
<aeth>
s/fNow/Now/
pkkm has left #lisp ["WeeChat 2.3"]
<buffergn0me>
aeth: That is true. Which is why I am not advocating replacing hosted service CI with Roswell. Two complementary uses. I want a simple way to test on multiple implementations on my machine. Setting up GitLab CI on my development machine is not easy!
<aeth>
What I mean about Roswell... Pretty much every C or C++ application I compile has its own build process and I'm not clever enough to write a shell script to do the correct invocations so I don't have to think about it every time I compile.
karlosz has joined #lisp
<buffergn0me>
aeth: Also, having different implementation versions on hosted test harness and your development machine is a feature, not a bug, when you are concered with testing for portability, like I am.
<aeth>
buffergn0me: A better-for-testing Roswell, written purely for testing without any C (so no secondary goal of bootstrapping), could just come preinstalled on a Docker image with all of the implementations pre-downloaded, but be run natively everywher else. Problem solved for CI and not-CI.
<aeth>
s/everywher/everywhere/
Bike has quit [Remote host closed the connection]
<aeth>
buffergn0me: Having different versions is just a coincidence that will eventually change over time, unless intentional and explicit. Rigorous testing would just... install different versions of e.g. SBCL if you want to test for different versions of e.g. SBCL. I'm not even sure if Roswell supports this or just pulls the latest.
<aeth>
(SBCL releases too often so you'd probably just want a handful of them unless you find a bug and want to pinpoint exactly which version introduced (or fixed!) the bug)
<buffergn0me>
aeth: Docker does not help you when you need to actually debug the test failures. It's another layer of garbage when what you want is to run the tests on the CL implementations you have installed.
<buffergn0me>
aeth: Also, it is not a solution when you want to run tests when working on a patch for an implementation.
Bike has joined #lisp
<aeth>
buffergn0me: I'm not quite sure you got the modification of my proposal. The test-helping program, cl-better-collection-of-every-Lisp-binary, can run outside of Docker and wouldn't use Docker, there would just be a Docker image of it with some of the binaries pre-downloaded, for use in CI
<aeth>
So a Docker image would depend on it, instead of it (potentially optionally) depending on Docker
<buffergn0me>
aeth: Ah, ok. That makes more sense.
<aeth>
It would use whatever ancient version of SBCL comes with Docker's Debian as its host CL to bootstrap it on Docker, and it would rely on an already-present CL (distro or manual or Portacle or whatever) everywhere else
<aeth>
So it could be pure CL and not have to deal with the C-related bugs Roswell has, or the C build system Roswell has.
<aeth>
But then you have identical CL implementations (not quite identical if you're on a different platform, like Windows) locally and on the cloud CI system, and if you want to test for different versions, just specify that (probably locally, since it would use too many CI minutes)
<aeth>
Maybe on Windows (and macOS? or is a CL in homebrew a better option?) use portacle, just to make it very clear that its sole goal is testing, not bootstrapping a CL where there wasn't a CL before
techquila has quit [Read error: Connection reset by peer]
<aeth>
heh, it looks like the first step of portacle is to install a separate SBCL binary, so I guess that's not needed, then.
techquila has joined #lisp
buffergn0me has quit [Ping timeout: 250 seconds]
salinasc has quit [Ping timeout: 265 seconds]
Josh_2 has joined #lisp
<Josh_2>
Are there any libraries that will let me import a video file, modify it and then export back out into a new file?
<Josh_2>
There are decoders for mp4, but I don't think they support outputting back to file
<Josh_2>
Yes, I saw cl-video but I don't think it supports writing back out to a file
<vms14>
idk, I'm not able to find more libraries for video, maybe there are more
<Josh_2>
if I can figure out how this man decodes the videos perhaps I can write the encoder
<Josh_2>
I want to write a video steganography library in CL for my honours project, but if there is no library that will let me read and write video files it makes it a bit difficult xD
<Josh_2>
I don't really want to ffi to a c library
<vms14>
you should dig on the source code of cl-video
<vms14>
maybe it's useful
<vms14>
and/or a pain
<vms14>
xD
<Josh_2>
The whole project isn't a lot of code
Oladon_wfh has quit [Remote host closed the connection]
mindCrime_ has quit [Ping timeout: 265 seconds]
buffergn0me has joined #lisp
<Josh_2>
Avi seems like a pretty simple video format so I think I will be okay :)
Bike has quit [Quit: Bike]
hh47 has quit [Quit: hh47]
raghavgururajan has joined #lisp
Ricchi has joined #lisp
iovec has quit [Quit: Connection closed for inactivity]
Oladon_wfh has joined #lisp
salinasc has joined #lisp
lemoinem has quit [Killed (orwell.freenode.net (Nickname regained by services))]
lemoinem has joined #lisp
salinasc has quit [Remote host closed the connection]
salinasc has joined #lisp
mindCrime_ has joined #lisp
vydd has quit [Ping timeout: 240 seconds]
mindCrime_ has quit [Ping timeout: 245 seconds]
clothespin has quit [Ping timeout: 252 seconds]
mindCrime_ has joined #lisp
Bike has joined #lisp
red-dot has quit [Quit: Going offline, see ya! (www.adiirc.com)]
<DrDuck>
Is there a book to learn ACL2 from?
LiamH has quit [Quit: Leaving.]
<buffergn0me>
DrDuck: A Computational Logic Handbook, Robert Boyer and J Strother Moore, Academic Press 1988
varjag has quit [Ping timeout: 264 seconds]
<DrDuck>
Thanks!
prite has quit [Ping timeout: 240 seconds]
Ven`` has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
salinasc has quit [Remote host closed the connection]
salinasc has joined #lisp
<no-defun-allowed>
Josh_2: if you can assume the user has ffmpeg, you can run ffmpeg with video->image sequence settings and use opticl or some other code to slurp up the frames.
<aeth>
Does a global function named by a gensym get garbage collected?
<pjb>
aeth: if not referencerd, yes, like any other.
<no-defun-allowed>
In SBCL, no, after a full GC I get "WARNING: redefining #:G417 in DEFUN" on my second definition
<no-defun-allowed>
Oh, right, it could be in the // variables and those places.
ltriant has joined #lisp
count3rmeasure has joined #lisp
<no-defun-allowed>
Now sb-ext:gc is messing with me. I'm not sure now.
lucasb has quit [Quit: Connection closed for inactivity]
<aeth>
Well, I can't seem to get format's function call to work with a gensymmed function name. But I don't actually need to gensym the function name, I guess, if I make it sufficiently general
<aeth>
(I tried internal and external to the function generated by macro)
salinasc has joined #lisp
xkapastel has quit [Quit: Connection closed for inactivity]
quazimodo has quit [Read error: Connection reset by peer]
<alandipert>
aeth out of curiousity, what do you mean by a global function named by a gensym? like you're taking an uninterned symbol from gensym and interning it in a package yourself?
<Josh_2>
no-defun-allowed: that's a good idea
salinasc has quit [Read error: Connection reset by peer]
salinasce has joined #lisp
<aeth>
alandipert: I was trying to create an unnamed function to use in format's ~/foo/ by generating the format string like (format nil "~~/~A::~A" (symbol-name package) gensym) but that wasn't working no matter where I placed it.
<aeth>
I just think that, at least on SBCL, the function called by format cannot be created at the same time as the function with the format string that calls it. And disassembling the result with a named function, it looks like SBCL inlined it! This is literally the first time I've seen SBCL inline when not asked to! (I mean, notinline probably overrides that, but I was just fascinated to see this at all)
<alandipert>
i think i see why, the symbol is never interned in that example afaict
<aeth>
oh you're right
<aeth>
that too
<aeth>
I would need to intern it in a package because the ~/foo/ syntax requires a package
<aeth>
it just tries cl-user if no package is given
bitmapper has joined #lisp
cosimone has quit [Ping timeout: 245 seconds]
<aeth>
no matter what, though, I was overthinking it and it's overkill to do anything but write a named function that reorders the arguments in a way that format expects, probably with the function signature (stream item &rest rest) ignoring rest
<vms14>
aeth: I don't really understand what the limits you have, but won't a macro or #.() help you?
salinasce has quit [Ping timeout: 240 seconds]
ralt has quit [Quit: Connection closed for inactivity]
smazga has quit [Quit: leaving]
zdm has joined #lisp
orivej has quit [Ping timeout: 265 seconds]
<aeth>
vms14: the specific problem was that the syntax of this obscure FORMAT feature required a package and the gensym was not interned... but the more general issue was that my approach was incorrect in the first place
<aeth>
although, hmm, maybe #: would work
akoana has joined #lisp
count3rmeasure has quit [Quit: Leaving]
salinasc has joined #lisp
paul0 has quit [Read error: Connection reset by peer]