ChanServ changed the topic of #picolisp to: PicoLisp language | Channel Log: https://irclog.whitequark.org/picolisp/ | Check also http://www.picolisp.com for more information
orivej has joined #picolisp
orivej has quit [Ping timeout: 265 seconds]
orivej has joined #picolisp
_whitelogger has joined #picolisp
orivej has quit [Ping timeout: 244 seconds]
rob_w has joined #picolisp
tankf33der has joined #picolisp
<tankf33der> o/
mtsd has joined #picolisp
<Regenaxer> Hi tankf33der, mtsd
<mtsd> Good morning Regenaxer!
<Regenaxer> I found and fixed two critical bugs in pil21. One was that functions with variable args failed, and the other concerned "~" read macros
<Regenaxer> Really hard to be sure everything is ok
<mtsd> If things are approaching finished, I could always test som of my existing apps under pil21?
<Regenaxer> yes, thanks!
<Regenaxer> I do so too atm
<Regenaxer> locally only
<Regenaxer> First I want to release PilBox
<Regenaxer> I have only a single App in production currently, so easier to test all functionality
<mtsd> I build simple things though, might not encounter many hard, corner cases. But I can always give it a try
<Regenaxer> sure :)
<Regenaxer> I simply start applications with "../pil21/pil" instead of "../pil" or so, depending on the setup
<Regenaxer> depending on the installation pathes
<Regenaxer> Some changes to some apps are necessary
<Regenaxer> e.g. (forked) must be removed
<mtsd> Interesting to try out the future of Pil, anyway :)
<Regenaxer> or (when (>= (version T) (21 0 0)) (de forked ()))
<Regenaxer> ok :)
<Regenaxer> I did the above 'when' in the firemen app so that it runs with the old pil64 PilBox
<Regenaxer> and also with the new one
<Regenaxer> So will remove (forked) later
<mtsd> What do I need to install to build on Debian?
<Regenaxer> $ sudo apt install make clang llvm libffi librea
<Regenaxer> $ tar xfz pil21.tgz
<Regenaxer> $ cd pil21
<Regenaxer> $ (cd src; make) && bin/picolisp
<Regenaxer> or
<Regenaxer> $ (cd src; make) && ./pil +
<Regenaxer> better
<mtsd> I was just missing clang and llvm, installing now
<Regenaxer> great
<mtsd> There, builds fine after adding some packages. ./pil -version -bye -> 21.0.0
<mtsd> Great!
<Regenaxer> :)
<mtsd> I will try doing a global install, as pil21, and write down how it goes. See if I encounter something special
<Regenaxer> I think a global install is not needed
<Regenaxer> Better to have some stable version there perhaps
<mtsd> I thought of keeping the stable verision where is is, as 'Picolisp', with symlinks called 'pil' etc, and install pil21 as 'pil21'. But then again, pil21 is bound to change still. Easier with a local pil21.
<Regenaxer> yeah, hard to say what is best
<mtsd> Only one way to find out :)
<Regenaxer> I usually never touch the global one (and also very rarely call it)
<Regenaxer> only for emergencies :)
<Regenaxer> if all local ones are broken
<mtsd> I use the global one quite a lot, actually. But I install the latest one manually, not the Debian version
<Regenaxer> Thats fine too
<mtsd> I think it shows how flexible pil is, really. Both options are available, and work very well
<Regenaxer> Indeed, so everyone can pick his favourite style
<mtsd> T
<Regenaxer> In the beginning the global Debian releases were too old to be usable, so I planted global links
<Regenaxer> But now the differences between Debian and latest releases are not so big any more
<Regenaxer> In Termux it is even better
<Regenaxer> quite up to date in the release
<mtsd> Picolisp has stabled :)
<Regenaxer> T :)
<mtsd> One such, rare, example of software actually approaching done :)
<beneroth> hi Regenaxer, mtsd :)
<Regenaxer> Hi beneroth
<beneroth> I do it like mtsd, usually making a custom installation into global one
<mtsd> Hi beneroth
<beneroth> though in newer projects I started to use a per-project pil-version.. not really needed it thus far though
<Regenaxer> the local installs don't take much space anyway
<beneroth> T
<mtsd> First test works quite well.
<mtsd> But PDF generation did not work, complains about "pdf - undefined"
<mtsd> But the function seems to be in place in svg.l, like in pil64
<Regenaxer> I see
<Regenaxer> The demo in app/lib.l uses 'pdf' and it works. Not sure atm
<Regenaxer> You need the namespace
<Regenaxer> app does (symbols 'ap 'svg 'pico)
<Regenaxer> So it runs in its own 'ap' namespace
<Regenaxer> hmm, ok, a bit incompatible :)
<Regenaxer> The difference is not pil21 itself, but the svg library. I wanted it out of the way and put it into a namespace
<mtsd> I'll just compare with the demo in app/lib, should solve the issue. My app does not have the namespave
<mtsd> A tiny bit incompatible :)
<Regenaxer> yep
<Regenaxer> I would not say incompatible though. It is more consequent, in pil64 some libs like android and vip were in their own libraries already too
<Regenaxer> s/libraries/namespaces
<Regenaxer> Found another bug
orivej has joined #picolisp
<Regenaxer> in print routines, caused by wrong namespace search
<Regenaxer> ok, works now
<tankf33der> Regenaxer: how you found this pribt bug?
<Regenaxer> Which one do you mean?
<Regenaxer> ah, print
<Regenaxer> I noticed in PilBox
<Regenaxer> the android communication failed
<Regenaxer> via PLIO, but you see the bug also in 'str?'
<Regenaxer> (only on special situations)
<Regenaxer> The read macro bug was nasty
<Regenaxer> only if ~ is in the first item
<Regenaxer> (~(foo) ...)
<Regenaxer> (a b ~(foo) ...) was ok
<Regenaxer> And the varargs bug only happened if one vararg function calls another
<Regenaxer> (de f @ (rest)) (de g @ (while (args) (f (next) (next))))
<Regenaxer> 'g' never terminates
<Regenaxer> Also found in PilBox
<tankf33der> i see.
<Regenaxer> The binding of the variable args was wrong
<Regenaxer> did not nest correctly
<Regenaxer> Perhaps more such bugs lurking around :(
<Regenaxer> And the last one, in printing and str?, appeared only if one namespace overshadowed a symbol in another namespace
<Regenaxer> Fifefight uses (symbols 'fifi 'gis 'android 'pico)
<Regenaxer> A symbol 'restart' is in 'android'
<Regenaxer> but 'fifi' also defines 'restart'
<Regenaxer> Then when the android restart was called, the sending of the Java method 'restart' via PLIO failed, because the *string* "restart" was sent to Android
<Regenaxer> tuff
<Regenaxer> Now all works
<Regenaxer> I think I tested every functionality in the Fifi App
<Regenaxer> I *could* release PilBox
<Regenaxer> but after finding so many bugs in such quick succession, it seems better to wait a little more
<Regenaxer> Thus: Any bug report welcome! ☺
orivej has quit [Ping timeout: 256 seconds]
mtsd has quit [Quit: Leaving]
<tankf33der> next task will be:
<Regenaxer> good
<Regenaxer> chop and fully?
<Regenaxer> (let L (chop N (fully ... (cdr L) L]
<Regenaxer> (let L (chop N (fully '((A B) ...) (cdr L) L]
orivej has joined #picolisp
rob_w has quit [Quit: Leaving]
<tankf33der> yea
<tankf33der> llvm 11 released
<tankf33der> pil21 works.
m_mans has joined #picolisp
<Regenaxer> Great
m_mans has quit [Ping timeout: 264 seconds]
Blue_flame has quit [Quit: killed]
Blue_flame has joined #picolisp
<tankf33der> http://ix.io/2Awp
<tankf33der> done
<Regenaxer> Quite long
<Regenaxer> cool