freenode/#clasp - IRC Chatlog
Search
8:17:55
drmeister
It's really late here - I pushed some changes that appear to have fixed the build - I won't know for an hour.
8:19:21
drmeister
I removed the Reader_O class - it was a stripped down reader that only read C++ strings that described lambda-lists for builtin functions. Now it uses the regular reader that everything else uses. That sent me into a world of hurt with packages and package use and shadowing symbols that took place very early at startup. Yuck. All better now (I hope).
9:46:49
nivpgir
I'm trying to get acquainted with clasp, and I can't get it to build. I'm using arch linux, does anyone have any experience with this?
12:12:20
Kevslinger
nivpgir: What branch of clasp are you trying to build? The 'Dev' branch is the one we all use, but was currently broken. drmeister pushed some changes earlier this morning that hopefully remedies this issue.
12:29:03
drmeister
nivpgir: Use the dev branch - but wait until I give the all clear later today that it builds properly.
12:30:37
drmeister
General audience: I just fixed the latest problem with the build - I'll let it the build run a bit and then push the fix. It was a simple typo.
12:36:18
drmeister
I pushed the change - bclasp build is now proceeding - I'm pretty sure the dev branch should build now.
12:47:25
beach
I am getting highly motivated to get source tracking to work in SICL, so I started by programming the CST reader of Eclector to give me source positions. I think I have figured out how to run HIR code in SBCL and have it interface to a real debugger (that remains to be written).
12:48:05
beach
This is very exciting because it means I will be able to run, debug, step, inspect etc. SICL code without having to give up my programming environment.,
12:52:54
kpoeck
There are installation instructions in https://github.com/clasp-developers/clasp/wiki/Build-Instructions
12:53:47
kpoeck
In https://github.com/clasp-developers/clasp/issues/541 there are some corrections that should apply to linux too
12:54:14
kpoeck
BAsically the instruction need to be updated to use llvm@6 and sbcl is also a requirement
12:56:06
drmeister
There is still a problem with the build - it's amazing how this cleanup propagated through the system.
13:05:11
heisig
beach: This is indeed very exciting! Until this real debugger is written, one could also try to launch SWANK/SLIME from within SICL.
13:06:10
Colleen
Bike: beach said 2 hours, 43 minutes ago: Remind me, are you using the system EXTRINSIC-HIR-COMPILER?
13:15:26
beach
heisig: I think the debugger will be easier to write than I previously had imagined. It will basically use Dissect to find the function that is executing in each stack frame.
13:15:27
beach
In the extrinsic environment (i.e. SICL running inside SBCL) that function will be a subclass of FUNCALLABLE-STANDARD-OBJECT, and it will contain source information for values of the "program counter" in the form of positions in HIR code.
13:22:11
beach
Hmm, I think I have an idea for how to instrument the HIR code. I could introduce a special AST and a special HIR instruction that represent poll points (as describe in the Clordane specification).
13:28:59
Shinmera
Bike: drmeister: Hi, in order to add support for Clasp to Dissect, I'd be very grateful if you could fill out this survey. https://plaster.tymoon.eu/view/856#856 (click the annotate button at the bottom)
13:31:43
beach
[sorry to disturb the flow] Such a poll-point HIR instruction would refer to three other such instructions, each representing the step-in, step-out, and step-over commands of the debugger.
13:36:59
nivpgir
Kpoeck:that is what I was following, the sbcl dependency indeed tricked me, I'll nake sure my llvm version is sufficient and try again once the build is fixed
15:14:12
drmeister
scymtym: I'm pretty sure it's clasp - it looks like SLOT-VALUE was incorrectly placed in the CLOS package rather than the COMMON-LISP package. Testing now...
15:19:43
karlosz
is there any type representation like what sbcl's #'sb-kernel:specifier-type returns in cleavir?
15:21:27
beach
I don't know what that is. Maybe Bike is more familiar with SBCL. And he has been working on the type inferences in Cleavir as well.
15:22:36
karlosz
the closest thing i could find was the type descriptors in the type inference folder, but th type lattice there is very coarse
15:23:26
karlosz
its used for the type lattice in sbcl which is how it does its constraint propagation pass (i.e. its type inference like capabilities)
15:33:03
drmeister
cclasp is now compiling once I moved the slot-value symbol into the common-lisp package.
15:38:43
drmeister
Clasp now reports time spent compiling, llvming(?) and linking - it's way off the mark on compile-file - I'm working on that.
16:17:04
drmeister
The new times that are being reported have some problems - so don't believe them yet. I'm working on that.
16:36:00
drmeister
I found the problem timing compile-file - I actually have to time the compile-file.
16:54:58
Bike
so mps won't work unless the static analyzer has run since the last change to theC++ hierarchy, right?
16:55:39
karlosz
Error (METHOD-CALL-ERROR) during printing: #<CLEAVIR-CST-TO-AST:INCORRECT-NUMBER-OF-ARGUMENTS #x0000100000B21299>
16:56:29
drmeister
I fixed the compile-file timing issue and now it accurately reports the llvm time spent generating code, optimizing, and generating object files.
16:58:32
Bike
it seems to me like putting bit vectors and null terminated strings in their own pools might be helpful
17:05:04
scymtym
karlosz: could be because there is no REPORT-CONDITION for that condition type in Code/Cleavir/CST-to-AST/condition-reporters-english.lisp
17:06:30
drmeister
Because SimpleBaseString_O and SimpleBitVector_O are already stored in the AMCZ pool - this pool is for objects that don't contain internal pointers
17:06:56
drmeister
Bike: You know this already - right? static GCInfo_policy constexpr Policy = atomic; means the AMCZ pool.
17:07:41
Bike
i think the more important thing is just cutting them out of obj_scan, which is easier.
17:08:01
Bike
the mps docs are really insistent that obj_scan should be as fast as it can possibly be, and right now we're doing a few conditionals that will never happen.
17:08:48
drmeister
Because that is straightforward as well. We add the new pools, we add the thread-local allocators for those pools, we define a new policy (a C++ type) for those pools and a template class that maps the policy to the allocator at compile-time and then we specify static GCINFO_policy constexpr Policy = your_new_pool_policy;
17:12:08
Bike
anyway yeah. just poking around there. i saw you put in some stuff to inline cl:cons, too.
17:13:57
drmeister
For boehm we just keep using the same pools we use now - because they don't support additional fancy pools.
17:15:45
drmeister
Yes, now that we know that MPS is going to be the production GC, I wanted to convince myself that I could get the cons allocator inlined in the CL code. It's doable with __attribute__((always_inline))
17:16:38
drmeister
Right - boehm doesn't have pools, it does have a MALLOC for objects that don't contain internal pointers
17:19:45
drmeister
This is the typical thing that I'm getting when timing compile-file (here with Boehm compiling alexandria/numbers.lisp) Compile-file seconds real(160.2) run(160.2) llvm(142.6) link(0)
17:20:52
drmeister
This is running bclasp compiled cleavir. bclasp isn't so pokey now that I added the my llvm-ir editing optimization passes.
17:25:00
drmeister
We need to look carefully now at LLVM to see what it is doing and whether it is running redundant optimization passes that add no value to the clasp runtime.
17:51:31
Bike
drmeister: was there a problem assigning to function descriptions? like changing a docstring for example?
18:04:52
drmeister
Now I'm compiling predlib.lsp with cclasp (again Boehm) The timing is: Compile-file seconds real(12.2) run(12.2) llvm(4.0) link(4.5)
18:07:32
drmeister
cclasp compile-file of alexandria/numbers.lisp - Compile-file seconds real(30.4) run(30.4) llvm(12.6) link(9.9)
18:10:15
drmeister
Also, cclasp spends 22.5 seconds in llvm+link and bclasp+cleavir spends 142.6 seconds in llvm+link
18:13:10
drmeister
stassats: There is a -O0 build. I'll run that later tonight and report back the comparable results.
18:18:01
Bike
it's just that when i tried setting things up to do that i got really weird errors that make me wonder about corruption
18:18:02
drmeister
But what you are actually doing is assigning to slots in the CONTAB vector indexed by a fixnum index in the FunctionDescription.
18:20:01
drmeister
Make sure you aren't actually writing into the FunctionDescription. The FunctionDescription is one pointer to the CONTAB vector of literals - these are all of the literals for the Module.
18:21:01
drmeister
The remaining fields in the FunctionDescription are either integers or indices into slots in the CONTAB vector
18:23:58
Bike
void setf_docstring(T_sp x) const { this->fdesc()->gcrootsInModule->set(this->fdesc()->declareIndex,x.tagged_()); }
18:53:13
drmeister
Uh - I just noticed - this is the setf_docstring function but you are using the declareIndex