freenode/lisp - IRC Chatlog
Search
15:13:45
H4ns
beach: fare has researched that comprehensively once and i think if you want to do the right thing, what he found is probably best. (fsvo "right" and "best").
15:18:50
beach
As long as we make a decision, and as long as it is not contrary to current practice, I don't care what the exact decision is.
15:20:26
jackdaniel
it works on Windows to afair (its not xdg standard on windows, gives reasonable windows-specific alternatives)
15:22:19
jackdaniel
here is a spec: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
15:26:19
jackdaniel
listener is a separate application, so if it has config, it should have its own directory
15:26:25
beach
I want to know whether the configuration file for (say) Climacs is directly under ~/.config or in ~/.config/mcclim
15:26:31
_death
maybe have it configurable, so that there can be multiple apps using mcclim with different configurations
15:27:36
beach
Actually, I probably would like an entire directory. And I would like to know not only where to put it, but what to name it.
15:29:42
_death
what I mean is that climacs conf, which may include mcclim conf, could be ~/.config/climacs
15:30:02
nyef
beach: There's often application-specific hidden directories in the user home directory.
15:31:09
nyef
The .d suffix is often used when there can be both a plain file (without the suffix) and a directory.
15:31:19
dlowe
it's not just in the user's directory. You can find it in plenty of places in /etc too
15:32:11
iago
usually on linux systems .d suffix means a directory to drop config files to be loaded by an application, as example /etc/httpd/conf is where apache stores its main configuracion /etc/http/conf.d all files there will be loaded by it
15:32:39
jdz
And it is usually the main config file that has a line to look for additional files in .d directory.
15:33:44
jdz
Then there is also apache/nginx convention of available configurations and enabled configurations (which are symlinks to available configurations).
16:25:41
didi
Is it possible that calling 2+ times (slot-accessor-fn object) performs better than saving the slot value like (let ((slot-value (slot-accessor-fn object))) ...) and using `slot-value' 2+ times?
16:30:32
didi
|3b|: I don't have the code anymore, but this puzzles me. I thought about SBCL's manual chapter 6.1 slot access.
16:31:22
|3b|
most likely case i could think of is if extra variable causes bad register alloc in a tight loop
16:32:21
|3b|
possibly something involving the extra variable causing creation of a closure that wouldn't have otherwise been needed
16:34:51
White_Flame
I tend to often pull special variable values into local lexical variables, just to micro-optimize things
16:34:58
|3b|
in either case i think it would be more about making something else slow than the actual variable access being slower
17:28:57
Balooga
I haven't been involved in a while, so I'm unsure of exactly what the differences are between the 1.2 and 2 SDL releases.
17:37:08
beach
oleo: I don't know. And I don't know that it is even possible. We had a very depressing discussion before about configuration, so I gave up thinking about it.
17:44:52
failproofshark
the author(s) of cl-sdl2 are there and could probably give you a better description
17:54:32
oleo
beach: nope, i looked into my https://github.com/wbooze/mcclim-stuff/blob/master/mcclim-20141217-git/Apps/Listener/listener.lisp file
18:02:53
oleo
beach: right 3 things prompt-size, read-frame-command method and the stream-present :around method, when using a (with-drawing-options (stream :text-size bla) ..... there i can change all the fonts to one fixed degree for input and output and all is aligned then
18:03:49
oleo
beach: without touching the source i'd have to write my own methods in the clim-listener package which overwrite those......
19:14:28
pebblexe
I just think optima is weird because I have to wrap it in a funcall... (funcall (optima:match 1 (1 (lambda () (format t "hello!")))))
19:17:28
dlowe
(defparameter +my-matcher+ (optima:match ...)) (defun do-matching (x) (funcall +my-matcher+ x))
20:02:54
oleo
beach: one more thing with paren highlighting in Libraries/Drei/lisp-syntax.lisp (when i don't use the (make-drawing-options :face (make-face :ink +blah+)) twice with blah highlighting inks then there's no highlighting of my parens in climacs-rv or climacs
21:13:15
shrdlu68
Optima's Interesting. I use a lot of case and cond in a bunch of code I've been writing.
21:13:43
jasom
and to answer your original question, optima has two advantages over COND: firstly it can be much more clear (like a CASE on steroids, compared to ((test1 x) ...) (test2 x) ...) you can see from (optima:match x ...) that you are specifically testing properties of X rather than a random if/then/else clause
22:58:24
Baggers
Is there any way to have thread-local storage other than via special variables & let? That mechanism is great but often then threads are started outside of my control (e.g. by slime) and so I believe I can't set the local storage on that thread
23:01:33
Bike
though i don't understand why you'd want to alter storage for a thread that's not your problem.
23:05:32
Baggers
Bike I want to make a variable called *context* which contains the gl context bound to that thread. When I run things in the REPL (or call C-c C-k) I'm running code on a thread I didnt make but I do want to be able to store the gl context bound on that thread. Maybe there is a better approach. A hashtable keyed by #'bordeaux-threads:current-thread seemed slow
23:08:42
Baggers
phoe: Im not using that approach. It seemed subpar. I was hoping to get away with thread-local storage
23:09:12
Baggers
Bike: hehe yeah, multiple gl windows is a requested feature..so multiple contexts and all that madness :)
23:15:46
Baggers
Bike: unforunately the following did still change the binding for all threads (make-thread (lambda () (setf (symbol-value '*tst*) -10) *tst*)) was I misunderstanding your 'symbol value' comment. It's works as expected if I use 'let' in the new thread, but then I still have the original issue
23:19:24
Bike
it seems like it would be kind of ugly anyway. changing contexts halfway through a draw sounds bad.
23:21:25
Baggers
each context has its own command queue, I dont neccesary need to be drawing on both at the same time. GL (IIRC) is fine with 1 context being 'current' on each thread
23:22:54
Baggers
nyef: it definitely isnt something I'm forcing. Just supporting for those who want it
23:27:11
nyef
Baggers: And, changing the subject a bit, does your software allow using quad buffers if the underlying GL supports it?
23:32:08
Baggers
nyef: Should do. I havent tested it but it should be case of adding it to the 'context' in when making a pipeline. (cepl:def-g-> some-name (:450 :quad) #'vert #'frag)
23:34:04
pmc
I was reading on Wikipeida that GNU CLISP doesn not support the full ANSI Common Lisp standard.... does anyone know what they have left to implement to be fully compliant?
23:36:44
Baggers
nyef: just checking the wiki I realized why I dont support them, they are deprecated for modern gl https://www.khronos.org/opengl/wiki/Primitive#Quads
23:50:12
Baggers
nyef: Gotcha. Doubt its working yet but some brief googling suggests it should be too bad to add. I'll add a ticket
23:51:11
Baggers
seems very related to multiple render targets which is already done, but I need to find more on this, and maybe a machine that supports gl_stereo if this doesnt
23:51:36
aeth
In case anyone's interested, my Brainfuck is probably finally ready enough to be put on git. And I guess I just barely got it ready in time for its official release in almost exactly a week from now. http://paste.lisp.org/+7BGT/2
23:53:39
nyef
Baggers: Fair warning: Basically nothing supports GL_STEREO in Linux these days, unless some proprietary driver has something.
23:55:04
aeth
Oh, and I had to make my Brainfuck program a full Brainfuck compiler as a response to objections that it wasn't a compiler in here earlier. As in, producing .fasl (or whatever the implementation calls them) from a source .bf or .b file.
23:57:11
nyef
Yeah, basically the only reason I have installed windows systems around here at this point is for stereoscopy work.
23:57:45
nyef
... Mostly to try and figure out how to get some of my stereo hardware to work in Linux.
23:57:54
Baggers
nyef: do you know you can render to left and right in one pass? (like multi render targets with regular fbos)
23:59:17
nyef
I'd heard something about that, but not dug into it. I haven't done much at all with OpenGL, and the software that I have for the one use-case that I've been trying to get working still uses MIT SHM and XSHMPutImage() or whatever it's called.
0:00:29
nyef
I could get it to run in stereo if I rewrote it to hit the KMS APIs directly, but... Bleh.
0:00:57
Baggers
Havent heard of that before, interesting. what hardware are you using? has razer's headset looked any good to you?
0:03:08
nyef
On the upside, I did finally get nouveau to output a suitable HDMI 3D signal for frame-packing modes recently. (-:
0:06:57
aeth
nouveau is disappointing. When I first went with nvidia in 2010 or so, nouveau was the best choice. Now, my new (GeForce 10 series) card can't even run on nouveau
0:10:07
nyef
aeth: Because nVidia started requiring signed firmware, and while they have said that they will provide the necessary firmware to the nouveau project, they've only recently provided *most* of the necessary firmware.
0:11:05
aeth
If AMD actually released competitive hardware on the high end, they'd capture a lot of the Linux market just because you'll be able to not have a buggy experience.
0:11:11
Baggers
nyef: Had a quick read. Requesting stereo looks easy (just pass :stereo to cepls init function). Rendering to multiple fbo attachments work fine (and should do the same for the default fbo) but rendering to each in its own pass isnt supported in CEPL yet, that a bit of a gap in the api actually. Filing an issue for that
0:12:02
aeth
CUDA locks a lot of people into nvidia, though, so AMD might not even be able to capture a majority of the Linux market even if they released superior hardware.
0:35:13
BusFactor1
is there a way to directly load a .asd file into a running lisp without dealing with paths and such?
0:37:29
BusFactor1
the library i'm trying to load is busted in quicklisp so i'm trying to directly load the development version i got from git
0:38:36
BusFactor1
i've had so many problems with paths and libraries i'm trying to learn a more direct way to load project sources
0:38:40
jasom
If anyone wanted to play around with my geany plugin, I have a "not too broken" verion here packaged up for ubuntu: https://github.com/jasom/geany-lisp/releases/download/0%2C2/geany-lisp-plugin_0.2.0_amd64.deb
0:44:06
aeth
Fare: Is it possible to use ASDF with other programming languages? i.e. If I can produce a valid Common Lisp foo.lisp for some foo.otherlanguage.
0:44:21
aeth
Well, it's probably possible once a bunch of (temporary?) .lisp files are generated, but before that?
0:44:39
BusFactor1
I'm livestreaming right now for those that are intersted in watching me try and get a machine learning library working: https://www.liveedu.tv/busfactor1-inc/RavAJ-general-work/
0:48:39
aeth
I have about 2/3 of a Scheme (but I probably am only 1/3 complete at best) and I can obviously take foo.scm and produce a temporary foo.lisp and run compile-file on foo.lisp and then load foo.fasl (or whatever the implementation-specific extension is)
0:52:50
Fare
you can subvert the reader in various ways, see for instance my reader-interception package
0:52:56
aeth
Right now I'm playing around with Brainfuck because I get to get some experience with stuff that are much, much later on in the process of creating an implementation than I am with Scheme.
0:54:59
Fare
or you can share the same pseudo .lisp file with a magic global #. form that references some special variable you set up in a wrapper form
0:55:42
aeth
Once a reader function has been written, there are at least three trivial things that can be done with it. At least, three that I've found with my Brainfuck. One's a reader macro, another is a regular macro that uses with-input-from-string on a source string, and a third is reading a file and compiling it.
0:57:25
Fare
BusFactor1, it's CL, you can do whatever you want, but for simple solutions, use the recommended patterns, and put your overrides in e.g. ~/common-lisp/ so you don't even have to configure anything
1:03:37
aeth
#4f(+++++++[>++++++++++<-]>++.<+++[>++++++++++<-]>-.+++++++..+++.>+++[>++++++++++<-]>++.<<<++[>----------<-]>----.<++[>++++++++++<-]>++++.+++.------.--------.>>+.<++++++++++.)
1:08:40
akkad
(deliver 'kunabi:main "../dist/lispworks/kunabi" 0 :keep-package-manipulation t :multiprocessing t :keep-eval t :keep-fasl-dump t :keep-editor t :keep-foreign-symbols t :keep-function-name t :keep-gc-cursor t :keep-keyword-names t :keep-lisp-reader t :keep-macros t :keep-modules t :keep-top-level t :license-info nil :keep-walker t :KEEP-PRETTY-PRINTER t) ;; works
1:41:00
reepca
So I'm in the situation of having a SLIME REPL I want to keep alive during a loop. So far I'm using code exactly like https://github.com/cbaggers/swank.live/blob/master/swank.live.lisp but have noticed that certain features of SLIME don't work during that, for example the parameter lists in the minibuffer. Any idea how I can make those work as well? They're awfully convenient...
1:50:36
reepca
I'm not sure how well that would work with manipulating global variables - that's currently how I control what my program does while it's running. Is there any reason I should be worried about that?
2:38:47
krwq
does anyone know if there is some portable way to escape argument when using uiop:run-program?
3:06:26
krwq
akkad, if you know that input is ascii then you can do it, if you do not define your encoding (or in other words - how to map from byte to character) you can't do it in any portable way
3:08:35
krwq
it's not CL thing, it's a general thing for any language. some languages will try to read BOM or assume encoding but that usually works only in countries which use letters similar to english
3:12:30
krwq
akkad: take a look at alexandria:read-stream-content-into-string 's implementation this should be fairly close to what you want