Results 86 comments of Joe Groff

You may need to use -DLLVM_CONFIG=/path/to/llvm-config to point cmake in the right direction.

Yes, you'll need LLVM and Clang 3.2 installed before building Clay. Note that later versions of LLVM and Clang aren't source-compatible, so it has to be 3.2.

LLVM and Clang installations can coexist in different locations. You should be able to install the 3.2 packages from http://llvm.org/releases/download.html#3.2 in, say, /usr/local/llvm-3.2, and point Clay's cmake config at /usr/local/llvm-3.2/bin/llvm-config,...

The representation of Function could be improved and retain a high-level, easy-to-maintain structure by being a variant Function (FunctionWithSmallClosure, FunctionWithHeapClosure).

Indeed, factoring out the memory holder is a good idea to avoid needless instantiation. I would guess though that, even if you have a fast malloc, locality and heap size...

Looks like a bug in externals.cpp—ObjcObject shouldn't be passed byval. It could be that the byval attribute is intended for the Vector argument but it calculates the attribute index incorrectly.

Sounds good to me; I always thought having variadic fields in records would be preferable to having builtin Tuple[..T] as a workaround. Keyword arguments in tuple/record constructors would be great...

It could have been fixed at the LLVM level in 3.2.

In traditional Hindley-Milner type systems, variant members are defined in-line as part of the variant type, so the idea was to allow those sorts of definitions, like `data Maybe t...

Some discussion already occurring in #375