freenode/#sicl - IRC Chatlog
Search
14:10:25
frodef
seems to me high-performance signal processing is a very very different ball-game than what a general run-time should be optimized for.
14:10:45
frodef
..then again, if you can have the former without any penalty on the latter, then all the better :)
14:11:46
beach
frodef: I truly believe that the call-site optimization of the paper will give us function calls that are as fast or faster than those of a typical C++ implementation.
14:12:21
heisig
I think we should introduce the notion of an object encoding. Each encoding has, at minimum, a Common Lisp type and some methods for emitting a sequence of instructions to convert between that encoding and the canonical (boxed) encoding.
14:12:33
beach
Even in C++, if you have a shared library, function calls and accesses to global variables have indirections, and we can do better than that.
14:13:50
beach
heisig: There are very few object types that can exist both as unboxed and as boxed values.
14:14:35
heisig
There is the canonical encoding, specialized ones for double-floats and 64-bit unsigned integers, but maybe also encodings for certain SIMD data types.
14:15:13
heisig
I think the rule should be 'everything that fits into a single CPU register'. And this includes SIMD data types.
14:16:14
beach
I guess I need to hint something like that in the paper. But I really should be working on HIR-to-MIR, coding wise.
14:18:12
Bike
multiple values might also be conceived of in terms of boxing and unboxing. if the caller and callee can agree on how many values are returned you might be able to skip e.g. putting the number of values in a register. my vague understanding is that in haskell they do this by returning a sort of unboxed tuple or vector or something
14:18:13
Colleen
Bike: scymtym said 2 hours, 11 minutes ago: i updated the pull request, but i can't currently test things properly because of a problem in the reaching definitions system. i think you already fixed it in the renovate branch. could you add the fix to master?
14:21:34
Colleen
scymtym: Bike said 28 seconds ago: whoops, thought i merged renovate all the way already. done now.
14:26:27
Bike
i think reaching definitions is still broken in that it fails its tests, though it does load
14:44:09
beach
frodef: It would be great to have you on board. With your experience, it's an ideal fit.
15:03:43
scymtym
Bike: i updated the PR. those changes are enough to make everything (including test systems) compile and load in SBCL
15:15:38
scymtym
i don't know. if you at the diff, there are TODOs related to ctypes. i don't know whether the complete transition can already be made
16:11:47
Bike
cleavir-ctype is massively broken (or rather, not really used) and i'll have to figure out how to fix it... ech...
16:12:40
Bike
well, basically you can't use any of its operations without a system parameter, and not everything has a system parameter at all times
16:13:40
Bike
which works, but if you do that the system is kind of pointless since you can't customize it
16:17:52
Bike
i think the sensible solution would be to avoid computing type intersections in cleavir-env, and instead store the intersection in the local environment, so cst-to-ast can compute it
16:35:15
Bike
https://github.com/s-expressionists/Cleavir/pull/7/commits/f27c1d5744e3c1704e5c82ee2265eb5693fd7f70 we've been trying hard to avoid this kind of conditional - what trouble does sbcl have with the declaration?
16:41:08
beach
HIR-to-MIR passes, but there are a lot of FIXMEs in there, and I'll work on those incrementally. The good news is that processing time did not increase significantly.
16:46:37
scymtym
Bike: i think the "recursive" nature of the type is the problem. for me, this resulted in some obsolete instance update cycle that eventually landed in ldb
16:47:22
scymtym
may only happen because i use elevated safety so that SBCL inserts type checks for slots
16:49:32
scymtym
everything in the visualizer related to environments is also very wonky and should be redone properly in some way
16:50:37
Bike
if i do rewrite cleavir to use trucler that might go away, in that trucler's sbcl environment interface is probably less rotted than the one in Environment/Examples/ or wherever
16:52:42
scymtym
i use the environment to inject the policy chosen by the user. other than that, i just needed something that allowed compilation to finish
16:53:08
scymtym
but picking up global functions and variables from the host may actually make sense as a default
17:13:24
scymtym
yeah, it will potentially catch fewer cleavir bugs when running in SBCL. but without the exception, it might not run at all
17:14:30
Bike
i think i'll try loading your branch and convincing myself that it's an sbcl problem before merging
17:16:19
scymtym
sure. there is no rush. feel free to not merge now if you want to make certain improvements first
17:32:11
Bike
trucler doesn't seem to have a way to get info about DECLARATION proclamations. that may be a little sticking point
18:10:55
Bike
when i try to load the visualizer i get "Invalid initialization argument: :UPDATE-INSTANCES-ON-REDEFINITION in call for class #<STANDARD-CLASS COMMON-LISP:STANDARD-CLASS>." while loading application.fasl.
18:12:06
Bike
and i think my quicklisp is fully updated. i ran into some problems with that make-ea thing so i wiped the asdf cache entirely to get this far
18:16:17
ebrasca
beach: following your tip of removing pathname-% from (%type :initarg :type :reader pathname-%type) collides wiht funcition type.
18:17:13
scymtym
(it makes the window update when the corresponding code is redefined so users have no use for it)
18:47:33
scymtym
i don't have a proper recipe and i think there might complex preconditions, but when i compile and run everything with (proclaim '(optimize (debug 3) (safety 3) (speed 1) (compilation-speed 0))), just starting the visualizer triggers it
18:48:59
scymtym
i wouldn't be surprised if it also depends on which thread evaluates what and finicky stuff like that
18:52:05
scymtym
i forgot, i have to modify the form to trigger a compilation to make the problem appear
18:54:24
scymtym
Bike: this is the simplest way to reproduce it i could find: https://techfak.de/~jmoringe/sbcl-crash.png
18:55:30
Bike
do you have the proclamations in your sbclrc or something? because that looks like i did and i didn't get a crash
18:56:04
scymtym
as i wrote above, (proclaim '(optimize (debug 3) (safety 3) (speed 1) (compilation-speed 0))), or do you mean something else?
18:57:30
scymtym
in this context, this difference probably is that high safety generates type checks based on slot :TYPE options