freenode/#clasp - IRC Chatlog
Search
16:57:20
karlosz
it iterates over every lexical variable in a worklist and if it doesnt have any uses then it removes its defining instruction
17:18:43
drmeister
We were talking about adding value numbering and Kildall to eliminate unnecessary temporaries. Then we talked about how mem2reg converts our code to SSA and that eliminates unnecessary temporaries.
17:19:28
drmeister
Is value numbering a stronger approach to eliminating temporaries? Is that why we don't just convert to SSA and remove useless store/load's?
17:20:26
karlosz
I rewrote SSA entirely, using basic blocks. the algorithm is essentially straight out of the textbook
17:20:47
Bike
The issue is we'd like to analyze things about closure variables as well, which can't be SSAd in general
17:21:49
Bike
Beach would like the analysis passes to work on variables in general, including ones that have to be put in cells i.e. not ssa-converted
17:25:16
Bike
global value numbering can also be used for common subexpression elimination and stuff,right?
17:27:52
drmeister
So we could run karlosz SSA pass and then lower it to llvm-IR. Cleavir PHI nodes will translate to llvm PHI nodes - correct?
17:28:56
karlosz
i have an unphi pass that makes the allocation explicit, but thats because im using a stack machine layout. it should just be direct with the register machine ir
17:29:09
drmeister
Is there any reason to do this since llvm already does this and removes useless temporaries.
17:30:59
drmeister
How much do we need to rewrite the translate step? It seems like not much. We can use karlosz's basic blocks and we need to add a translate-simple-instruction for PHI nodes.
17:32:34
karlosz
you can use the same variable allocation you had vbefore. all SSA does is make the number of defining instructions strictly 1
17:34:37
drmeister
karlosz: llvm has alloca's - they are memory in the stack frame. llvm also has registers - they are registers.
17:37:43
drmeister
Right now we don't use them between translate-xxx-instruction, we only use them within translate-xxx-instruction
17:40:17
drmeister
Doesn't have to be right away - but I think I see the shape of it - it looks good.
17:42:20
drmeister
I'm supposed to be the cranky conservative one and you are supposed to be the adventurous young spirit that takes us to new heights.
17:43:00
Bike
Right now I'm an adventurous young spirit that's been staring at merge conflicts for two days
17:43:45
Bike
i think beach wants most transformations to run before closure conversion anyway, so we just do 1) do a bunch of shit 2) closure conversion 3) ssa 4) translate
17:53:34
karlosz
im hitting a variable unbound error at compile time for something like (let ((x 1)) (symbol-macrolet ((f x)) f))
18:05:39
karlosz
oh, it only works if i recompile the function. but there shoulldnt be any ordering problems with just defuns and defmethods...
18:30:28
Bike
You said you were in an 'mps' branch? I'll make a clasp-changes-mps branch for you to use.
18:31:07
drmeister
I don't know what the problem is: Could not find waf node for lisp file None - did you run './waf update_dependencies'?
18:32:56
drmeister
It's something to do with: src/lisp/kernel/contrib/sicl/Code/Cleavir/Abstract-syntax-tree/simple-float-related-asts
18:40:48
karlosz
i did have to #-cleavir out a check-special-form-syntax method on 'function in SICL itself though, since there's no system argument to specialize on
20:33:32
drmeister
I spent all morning simplifying the build system so that on macOS it wouldn't require a wscript.config file.
20:34:05
drmeister
Why? I have no freaking idea - for some reason waf on David's machine doesn't recognize what OS it is on.
20:34:46
drmeister
He is running High Sierra with the latest Xcode that became available today. TODAY!
20:35:12
drmeister
If that breaks wafs ability to detect the OS then I have definitive proof that god exists and that he hates me.
20:36:42
drmeister
The rest of you can sort your philosophical conundrums out yourselves - I know my place in the Universe.
20:40:04
Bike
i think letting him deal with a config file probably would have been less error prone than messing with the build system again
20:41:44
drmeister
David says that waf detects what OS it is on by checking the compiler - probably something about Xcode 9.3 or 9.4 broke that.
20:41:58
Bike
...unrelatedly, my netbook is running low on battery, so if i drop off that's the score.
20:42:48
drmeister
I think the link-type has something to do with creating functions and the linkage - can you provide more context?
20:56:58
drmeister
I pulled the latest dev and started building it - it is building in serial mode - have you tried parallel mode?
21:07:10
Bike
i'm hitting a weird build problem when using CSTs and i wanted to use bclasp+cleavir to poke at it
21:08:46
drmeister
balrog: Excellent - give me a few min - I'm going to make a few changes then ask if you could build the new 'dev'
21:09:59
drmeister
Mine says: /Applications/Xcode.app/Contents/Developer which is good - because I am a developer
21:10:26
balrog
(see, the macOS clang/clang++/ld/ar/ etc commands really go to this program called `xcrun`, which then checks the xcode-select path and then runs the appropriate tools in that prefix)
21:16:46
balrog
and one other thing: is his `python` the system shipped python 2.7, or something else?
21:17:07
balrog
(for a time, homebrew symlinked `python` to python3, which led to all sorts of problems.)
21:23:15
drmeister
He's one of the nicest guys I've met - he's still going to think I'm an idiot if I don't know what exactly is wrong. :-)
21:23:47
balrog
considering what kinds of wacky local configs I've seen developers have on their computers.... :D
21:25:19
drmeister
If there is a problem that a wscript.config option can't fix - I don't want to experience it.
21:30:58
balrog
continuum analytics makes it sound like there's anaconda or something in the path... I shouldn't be surprised there :)
21:33:38
balrog
yeah, it works for me after activating anaconda, so I wonder if his anaconda is very much out of date.
21:44:10
drmeister
I have parallel building working - I had to add USE_PARALLEL_BUILD = True to wscript.config
22:06:38
drmeister
I think so - but I had convinced myself that the default was USE_PARALLEL_BUILD = True but it isn't - the default is False
22:07:22
drmeister
I should add a simple block of code that sets defaults when the values aren't specified. Right now it's a hodge-podge of testing for []
22:10:14
drmeister
Uh wait - how about I let it finish. Maybe bike will be back by then and I can ask him if we are ready to start pushing to 'dev'
22:24:47
kpoeck
@balrog, now that i have llvm from brew, is anything from xcode installation still used?
22:27:33
drmeister
ACTION has always seen macOS as a delivery vehicle for Xcode. Like coffee is a delivery vehicle for caffeine.
22:28:00
drmeister
ACTION is not sure what normal people use their computers for - and is vaguely suspicious of them.
22:29:17
drmeister
balrog: I have no idea if that will work. macOS Xcode has never worked with clasp and I gave up trying a few years ago.
22:29:44
drmeister
Since we use so much of the llvm API we are pretty much pinned to specific llvm releases.
22:30:06
balrog
drmeister: you'd still need LLVM from Homebrew or somewhere. Xcode no longer ships a version of the LLVM libs that one can link to.
23:06:20
kpoeck_
drmeister: how did you solve the "assert waf_node != None, "Could not find waf node for lisp file %s - did you run './waf update_dependencies'?" % file_name" probelm
23:12:47
kpoeck_
assert waf_node != None, "Could not find waf node for lisp file %s - did you run './waf update_dependencies'?" % path
23:13:24
kpoeck_
with this correction I seem to be missing src/lisp/kernel/contrib/alexandria/package
23:14:11
drmeister
kpoeck_: You might need to delete your copy of sicl and let ./waf configure get you a new one
23:15:11
drmeister
I didn't quite do that because I thrashed around for a bit and then Bike set us up with a new commit to draw from.
23:16:19
drmeister
But I'm not sure what happens when you have a separate branch for 6 months and then merge it and then try to build with inconsistent repos within your repo
23:18:29
balrog
drmeister: we'll probably need -lffi when building against distro-packaged libllvm on Ubuntu and Arch as well.
23:22:22
drmeister
It is an upstream problem right? We should get snooty like the rust folks. I don't want to be out snootied.
23:29:59
kpoeck_
AssertionError: Could not find waf node for lisp file src/lisp/kernel/contrib/Eclector/code/readtable/packages - did you run './waf update_dependencies'?
23:31:30
Bike
i mentioned to you that it would build eclector and alexandria and stuff even with generate-ast
23:32:22
drmeister
kpoeck_: Give me a few minutes to sort out what is going on and what we are missing.
23:32:26
Bike
https://github.com/clasp-developers/clasp/commit/bd04d3ec093826ea8e38ef69dde94234614137c4
23:32:46
Bike
https://github.com/clasp-developers/clasp/commit/bd04d3ec093826ea8e38ef69dde94234614137c4#diff-dc6134e3d3c869a052520d86f46371dcL156 here specifically
23:33:11
kpoeck_
Its compiling, I think we just miss to pull alexandria and eclector in update_dependencies
23:34:46
drmeister
I did a quick ediff on the dev wscript file and the changes I made today and wiped out the code to pull those two repos - fixing...
23:37:55
drmeister
Swinging between panic that I broke peoples builds and elation that we got the merge working and stuff is working in the lab.
23:39:24
drmeister
I would have caught this problem if I hadn't pulled the merge into my cst-dev directory, which had a recent enough Eclector and alexandria in it already.
23:42:48
drmeister
I know - I'm tucking into some fresh kiwi fruit - confirmation that I don't live in the worst of all worlds.
23:43:51
kpoeck_
There are people in the company that I work for, that still have to use cobol on a mainframe :-)
23:48:52
karlosz
drmeister: do you have timings for clasp self compiling cleavir? i wanted to compare my self host time with clasps but it up all my ram again
0:24:25
balrog
drmeister: looks like Ubuntu doesn't package the Clang libs in a way that clasp's wscript expects
0:26:54
drmeister
Because on supercomputers I need static linking - so I started from there and never changed it.
0:29:29
drmeister
We can switch to dynamic linking - but waf seems to want one or the other. Take a look at the wscript where it searches for the boehm library. It tries first to find a static version and then it drops down to the dynamic version.
0:30:33
drmeister
balrog: I don't want to touch another build system until we have loads of developers and there is a really, really, really good reason.
0:31:48
balrog
this would not be the only project I've had to deal with that uses a fairly uncommon build system. :|
0:33:07
drmeister
It's python - I understand python. I don't understand cmake or autotools and I despise boost::build and perforce jam.
0:34:29
balrog
the other build system I'm citing above is a fork of Premake and interestingly enough, uses Lua
0:37:21
drmeister
It's Python and you have function calls to build a dependency graph. We don't use waf the way it was intended - or we barely do.
0:37:59
drmeister
I know a guy who left his job partly because he hated the build system that they decided to switch to.
0:38:35
balrog
I know multiple people who wrote their own build systems because either they hated everything that existed or everything that existed was unsuitable for the application.
0:39:02
drmeister
Two? Three? years ago I switched to waf with no idea how it would go because I was so frustrated with boost::build.
0:39:38
balrog
I've used scons before (also python) and my opinion on it is that it's clean and workable bu tit doesn't scale.
0:40:02
drmeister
All I ever hear is programmers vowing that they are going to develop their own build system.
0:40:38
drmeister
Ha! Where they should really be focusing their efforts is to develop their own compiler.
0:42:16
balrog
haha funny you should say that. one of them is developing FPGA tools, another is developing cross platform compatibility environments to run legacy Apple/Mac software on modern platforms, as well as Unix-like environment on legacy platforms
0:45:54
balrog
just like the effort to improve workflows for computational chemistry led to building a Common Lisp compiler
0:48:58
balrog
my experience with scons? it couldn't handle macOS "fat binaries", it couldn't handle cross compiling