libera/#commonlisp - IRC Chatlog
Search
13:52:43
VincentV`
ecraven: At the time of writing KR was actually created as an efficient alternative to the typical frame-based systems of the time. (2) It was fast enough 30 years ago, it will be fast enough now. (3) There will be specialization mechanisms and batch graphical API commands in Fern.
13:55:53
ecraven
VincentVega: thanks for all the interesting ideas and links ;) regarding fast enough, it'll be interesting to see that, many things have improved, especially expectations ;)
13:57:56
VincentVega
ecraven: There will be caching mechanicsms in Fern. If you are interested, take a look at "The Drawing Process" in the Fern section.
14:03:11
pjb
ecraven: remember that garnet is a GUI; it doesn't have very hard time constraints, notably not on modern hardware. As long as the reaction time is under 10,000,000 ns…
14:04:32
pjb
ecraven: of course, using something like KR or Cells may have efficiency implications compared to more procedural systems, but again, you'd use that to avoid having to track the dependencies between the data elements yourself.
14:07:35
ecraven
pjb: I'm thinking of things like positioning points based on data, so if the data changes, widgets should move.. think of particle systems in a game. unless the idea is that this sort of approach just isn't suitable to that
14:13:50
VincentVega
ecraven: You could wrap a large point cloud into a custom data structure, and then build around that. I don't really see a problem.
14:17:57
VincentVega
I mean, sure, of course, if you create some crazy amount of interactive elements, and if you use constraints on all of them, it will probably be troublesome. It depends exactly on what you are doing, too. And, yes, sure, it's yet to be seen how exactly performant multi-way constraints are (but the papers claim good performance for their demos).
14:36:37
Fare
jackdaniel, I lost my OTP for cl.net... oops. I need to renew access before I may merge.
14:40:18
random-nick
VincentVega: don't gamedevs use entity-component-systems instead of prototype OO for such dynamic objects?
14:41:30
random-nick
also, it's unclear to me how would layout work, wouldn't child cells have to have some information about where the parent cell is going to put them during laying out?
14:42:13
VincentVega
random-nick: Some use protype OO. The point was that the class/object seperation doesn't work there.
14:42:31
VincentVega
random-nick: The information may be accessed via pointer variables. There are also contexts.
14:42:45
random-nick
and regarding your mentions of climacs, if you're not aware, there's a new in-development rewrite of it called second climacs, but it's still uses a character-based representation afaik (but it no longer uses a custom incremental parser) https://github.com/robert-strandh/second-climacs
14:44:14
VincentVega
random-nick: I knew about 2nd climacs, but not that it decided to ditch the parser. Interesting, thanks.
14:48:50
VincentVega
beach: Yeah, Eclector is an awesome development. Thank you for it, and the people who developed it. I am hoping to reuse it myself when the time comes.
14:52:06
random-nick
also it's important to note that climacs uses the lisp image it resides in, not a swank connection
14:58:57
beach
So write the code twice in different ways; in one way for the reader and in another way for the editor?
14:59:02
random-nick
VincentVega: and regarding the section about the project management platform, there already exists such an integrated platform implemented in C called fossil (https://www.fossil-scm.org/) and it's used by sqlite and tcl, though it's much stricter than what you want to make. basically, it's a version control system, bug tracker, forum and wiki all stored as a single sqlite database
15:00:09
VincentVega
beach: I can't provide a direct link to the particular section, but I wrote about that here https://project-mage.org/the-power-of-structure just search for the "Handling of Reader Macros" section.
15:01:25
VincentVega
random-nick: I've heard of fossil, never tried it though. But to me, yeah, the major point is in the environment.
15:05:39
minion
holycow, memo from mfiano: it's just a directory so sure, just updated your implementation's startup file to reflect the new location.
15:05:39
minion
holycow, memo from pjb: (load "/path/to/your/quicklisp/setup.lisp") in your rc file.
15:09:41
VincentVega
beach: I actually refer to your paper there, it helped understand a few points about reader macros.
15:15:22
ecraven
holycow: If you try using paredit (or one of the other similar modes) in Emacs, or watch videos of SEdit, you'll see what structure editors might be like.
15:15:49
ecraven
or actually just try SEdit, it even works online (https://interlisp.org/running/online/)
15:16:46
random-nick
VincentVega: also, as a drawing "backend" you might be able to use the lower parts of mcclim, it might or might not be more comfortable than sdl2 but could be more flexible if you need it
15:17:55
random-nick
reading the mcclim critique I thought you misunderstood some parts of clim, but I haven't really written anything with mcclim so I'm not sure
15:18:17
ecraven
VincentVega: have you written anything about handling text? that's one of the larger hurdles, imho ;)
15:21:39
VincentVega
random-nick: I did misunderstand a point or two. I will have to rearticulate that, I placed a notice there too. As per the backend: all I will want from the backend is some events and draw calls, I think that sdl should do just fine.
15:23:00
VincentVega
ecraven: I have. Too much on the one hand and, yet, it seems like too little. Please, see https://project-mage.org/the-power-of-structure#Rune
15:24:21
ecraven
sorry for not explaining what I mean, I'm talking about unicode and character composition and all that stuff
15:27:23
VincentVega
ecraven: Oh, no, I haven't written anything about unicode or encodings. As per rtl, I think that's where specialized editors could help, because every editor is itself responsible for its own graphical output (and stuff like cursor motion).
15:28:51
VincentVega
ecraven: I might be misunderstanding, but if you mean a hurdle to structural editing, could you elaborate?
15:29:23
ecraven
not to structural editing, but in general. even the structural editor should support entering all kinds of text, right?
15:32:05
VincentVega
ecraven: Yeah, I have read a few horror stories about the correct handling of various editing situations. But I am convinced that structural editing may only help. What structural editing gives you is knowledge about the information you are dealing with. Structural editors are in essence specialized editors, and so, yes, they can do whatever the information at hand requires them to do. There are no limitations to that.
15:32:13
ecraven
something like harfbuzz could do the shaping, then you "only" have to draw the glyphs ;)
15:32:41
VincentVega
ecraven: Yeah, that part of the text-handling story, I prefer to leave to stuff like harfbuzz, for now : )
15:36:31
VincentVega
random-nick and ecraven: thank you both for the interesing questions and the useful pointers, by the way : )
15:39:53
random-nick
regarding my mcclim as a backend point, I was referring to the fact that clim is structured as a tower of abstractions where you can use the lower levels without the higher ones
15:41:17
VincentVega
random-nick: Oh, yeah, you mean snatch away some lower layer? Ha, maybe. Who knows.
15:45:27
NotThatRPG
Using SLIME, should I expect evaluating a special variable in a debugger frame to give an accurate value for that special variable at that point in the stack? I'm getting a NIL where a function called incorrectly *binds* that variable, but I don't see the value set initially at the bottom of the stack. Using SBCL.
15:56:26
beach
It is interesting that the standard is ambiguous when it comes to the word "bound". I would like to fix that some day.
16:02:14
jackdaniel
NotThatRPG: if you mean the value before the dynamic binding, you may call symbol-value on it
16:06:23
jackdaniel
I see, thanks. I must have confused that with something else, because I'm sure I saw something like this..
16:06:56
random-nick
I don't think the standard provides a way to access the global value of a special variable?
16:07:24
beach
Here is an example of the ambiguity: (defparameter *a* 10) (defparameter *b* 20) (progv '(*a* *b*) '(30) (list (boundp '*a*) (boundp '*b*))) gives (T NIL).
16:08:44
beach
But the dictionary entry for PROGV says that *b* is "bound" (but "then made to have no value").
16:10:39
beach
I would like to fix the terminology so that there is a separation between "bound", i.e., a binding exists, and "having a value".
16:12:33
Catie
What would it mean for a symbol to be bound, but have no value? Just that BOUNDP would return T?
16:13:26
beach
Catie: It means the case illustrated by PROGV, and yes, if BOUNDP were correctly named in that situation, it would return T.
17:20:37
Bike
What's the best practice for having custom asdf component types? I remember it being an old problem that defsystem-depends-on doesn't help if your component class names are symbols in some dependent package, but I don't remember the solution.
17:21:55
jackdaniel
I don't know what is the best practice however asdf-user is a package that should exist
17:23:53
_death
I remember that problem with cffi grovel.. in the end it was resolved by it too using a keyword
17:24:02
random-nick
cffi seems to just alias its classes into the asdf package https://github.com/cffi/cffi/blob/master/grovel/asdf.lisp#L150
17:24:20
etimmons
Use strings instead of symbols for the component class names. The strings are READ-FROM-STRING after all defsystem-depends-on are loaded.
17:29:08
random-nick
by the way, I might have asked this question earlier, but how do you generate code and compile it with the file compiler while playing along with asdf?
17:30:39
random-nick
do you need to make a separate component type which runs the generator and then uses the result? where do you put the generated file? same place as the system's source files or into wherever asdf keeps the fasls?
17:32:45
phoe
in particular, https://github.com/edicl/cl-unicode/blob/2790a6b8912be1cb051437f463400b4a7198748a/cl-unicode.asd#L48-L49
17:37:22
random-nick
hmm, kind of weird? it seems to make a separate system which has additional outputs on load-op, then on the main system it additionally checks whenever all of them are present, and if not, loads that separate system?
17:38:14
random-nick
and I guess where to place the additional outputs is handled by asdf? or is it just at the root of the system
17:42:39
random-nick
on my installation they seem to be present in the root of the cl-unicode system
17:51:11
phoe
note that the source tarballs or the repo at https://github.com/edicl/cl-unicode/ does not include these files
17:57:43
random-nick
phoe: what seems rather confusing to me is that the generated files seem to have an older modification date compared to the human-written files
18:01:50
random-nick
phoe: anyway, thanks for the pointers, this seems to work fine since cl-unicode is a very popular package
18:02:27
phoe
I know that guix people had to work around it generating source files in its source directory, since source directories in guix are immutable and therefore read-only
18:11:13
Bike
i'm still having a heck of a time understanding checkl. with cl-conspack, even if i try testing with upstream conspack instead of my fork, fiveam says it's not doing anything
18:21:22
phoe
after a brief glance I have no idea if the code that invokes checkl via fiveam actually works
18:24:05
Bike
i also get some deprecation warnings. maybe i should just port the tests to use fiveam directly.
18:26:44
phoe
honestly, I'd do it - even if respecting the principle of least surprise is everything you get out of it
18:27:23
phoe
I've read the manual the last time you've mentioned checkl and it still seems too clever for me
18:53:30
NotThatRPG
beach, jackdaniel : I had to go out before your responses. I was talking to Phoebe and they said that SBCL implements dynamic bindings efficiently using UNWIND-PROTECT, which avoids a lot of the performance issues of specials, but isn't well suited for this kind of debugging use case.
19:07:03
NotThatRPG
@jackdaniel: I'm not sure how that would work, but I'm not familiar with the SLIME-db internals.
19:07:45
jackdaniel
phoe: that's the point - how to look up the symbol value ignoring dynamic bindings
19:08:05
NotThatRPG
@jackdaniel: I wasn't trying to *ignore* dynamic bindings and get a global variable.
19:08:28
NotThatRPG
I wanted to get the current-for-this-stack-frame value in the debugger as I move up and down the stack.
20:03:59
nij-
There's trivial-timers in my quicklisp distribution, but I think something else gets loaded.. can't find out.
23:28:49
yitzi
Josh_2: shasht uses whatever is in `*symbol-name-function*` to print symbols. https://github.com/yitzchak/shasht/blob/4fc7c9dad567a4266ec3a6596d50744df9ea1c61/src/config.lisp#L65