Fork me on GitHub

@darwin: Even though inline-truth's motivation is Closure, I'm curious about the change’s perf consequences for bootstrap. I made a branch of Planck that builds with your change ( and found that if you run the ClojureScript unit test suite via Planck built with that mod (script/test-core), a few fail ( and it also goes into a curious loop, executing the tests over and over again.


Oh I have seen that loop, not investigated in deep, but it was some weird test.async + error problem, not sure though, but in my case I had to make tests sync with promises (while usually you do it with a latch)


Theoretically there should not be any difference, you still are trying to make sync something async but...there must be something that was forcing the looping of some atom


There was a nice talk about how to debug using hypothesis, well my explanation above I reckon is probably complement of that talk 😄


@mfikes: thanks for checking that out, yes, we have to properly benchmark it and reason about its correctness and other consequences (like generated file sizes implications). For me all standard clojurescript tests passed. I wanted to discuss it here briefly if it has any chance of being accepted before we open a JIRA ticket. I’m willing to do more work on it (tests/benchmarks/etc.)


@mfikes: I just realized that my inlined function was prone to double-eval of the test expression - I have just fixed it with this commit: the optimization still seems to work - I don’t have time to explore bootstrapped scenario right now, I will look into that later


@darwin: I updated the Planck variant with your last commit and it fixes the failing tests as well as the looping issue. It appears to have the same perf as without the patch (in terms of running the ClojureScript compiler unit tests using Planck, and startup latency evaluating an expression via -e.) Also the resulting Planck binary (which ships everything inside it) is the same size with your changes.