Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
StefanKarpinski
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
13 ms
·
61.
▲
by
StefanKarpinski
5y ago
The password is still revealed to the server. There are password verification protocols where the password is not revealed to the server either, which is much more secure as it means that you’re not at the mercy of whether the sever operato
62.
▲
by
StefanKarpinski
5y ago
Good paper—it was the primary source we looked at when implementing these operations in Julia. Specifically, Julia implements all versions and overloads `div` and `rem` to take a rounding mode argument. It also gives special names to a few
63.
▲
by
StefanKarpinski
5y ago
That's not how Julia's JIT works—it's "Just Ahead of Time" which is a term we use to distinguish it from what other modern JITs tend to do, which is generate code after some interpreted execution based on observed b
64.
▲
by
StefanKarpinski
5y ago
That means it does depend on the value.
65.
▲
by
StefanKarpinski
5y ago
Ah, ok. I hadn't gotten to that part yet. Would it make sense to change the general definition to "expressions" since that would be the correct definition for Julia code as well as the Jules IR format?
66.
▲
by
StefanKarpinski
5y ago
This is one of the reasons that Julia doesn't do automatic big num conversion, instead using native machine two's complement modular arithmetic for integers. It would be a good optimization to use an immediate representation for s
67.
▲
by
StefanKarpinski
5y ago
I'm still working through the paper—reading your group's Julia papers is always a great treat—thank you for this one and all of them. Looking at the definition of "type groundedness" it seemed to me that perhaps the defi
68.
▲
by
StefanKarpinski
5y ago
It's true that 1.0 feels really old at this point. We're also trying to improve messaging that people should generally not be using LTS unless they work in a really deeply risk-averse organization. Almost everyone should just us
69.
▲
by
StefanKarpinski
5y ago
C# is certainly more flexible in this regard but I wouldn’t say they made the distinction between primitive and object invisible, they just allowed user-defined “primitives” in the sense that users can define C-style structs that have value
70.
▲
by
StefanKarpinski
5y ago
That’s a really good question and I’m not sure I fully understand all the reasons. One big one is that Java intentionally has made interop with native libraries quite difficult. One cannot take a language seriously for numerical computing i
71.
▲
by
StefanKarpinski
5y ago
Right, the question becomes: if you have `(a + b) + c` and one of the `+` operations allows re-association but the other one doesn't, then what happens? The problem being that associativity is a property that only makes sense for an en
72.
▲
by
StefanKarpinski
5y ago
Local would be not using register flags at all and instead indicating with each operation whether you want flushing or not (and rounding mode, ideally). Some libms may clear and restore the control flags and some may not. Libm is just an ex
73.
▲
by
StefanKarpinski
5y ago
The way Julia handles this is worth noting: - `fma(a, b, c)` is exact but may be slow: it uses intrinsics if available and falls back to a slow software emulation when they're not - `muladd(a, b, c)` uses the fastest possibly inexact i
74.
▲
by
StefanKarpinski
5y ago
To be fair though, as noted further down in that thread, naive left-to-right summation is the worst case here since the tree of operations is as skewed as possible. I think that any other tree shape is better and compilers will tend to make
75.
▲
by
StefanKarpinski
5y ago
That's true, but the danger of flushing subnormals to zero is correspondingly worse because it's global CPU state and there's commonly used code that relies on not flushing subnormals to zero in order to work correctly, lik
76.
▲
by
StefanKarpinski
5y ago
> Maybe it would be nice if my compiler could automatically replace any inefficient loops with vectorized equivalents The trouble is that a for loop is much more expressive than vectorized operations, so most for loops cannot be transf
77.
▲
by
StefanKarpinski
5y ago
This feels a bit ironic given how much the for loop has been villainized in numerical computing, by none other than languages like Python—and Matlab and R—where for loops are so awfully slow that you can only get performance if you avoid th
78.
▲
by
StefanKarpinski
5y ago
You say that as if fairness has anything to do with it. It doesn’t. Programming languages need to let people install packages on all the major platforms. End of story. Any approach that doesn’t make that practical and scalable is dead in th
79.
▲
by
StefanKarpinski
5y ago
In this vision of the world, how does one install Python packages on Windows or MacOS? Or even on Linux distros that don't use RPM or Apt? Let's suppose that some language decides to use the system package manager to install packa
80.
▲
by
StefanKarpinski
5y ago
The big problem in this post seems to be compiling via C (and the awkward GPU extensions thereof), which has lousy Float16 support. LLVM has adequate support for at least representing Float16s. Because of this (and a lot of work by a lot of
81.
▲
by
StefanKarpinski
5y ago
Might make it easier to dispatch on both the object and the action? Just a wild guess.
82.
▲
by
StefanKarpinski
5y ago
Indeed. And in this case, the #3 contributor (and #1 in recent times, really) to Julia is also the current primary maintainer of libuv so it’s very unlikely that there would be any critical fixes that would be missed. This particular exampl
83.
▲
by
StefanKarpinski
5y ago
Not to call anyone out but examples? Every time I look at packages I’m blown away by how much effort has gone into their docs. But people keep saying this kind of thing so there must be some packages they’re hitting that are under-documente
84.
▲
by
StefanKarpinski
5y ago
The thing is no one is saying that starting a process every time isn't a valid way to work — it works great in most scripting languages. What people are saying is that since it's slow and annoying in Julia currently, you might wan
85.
▲
by
StefanKarpinski
5y ago
I was curious about that too. Many other people use Windows 10 and this is the first time this issue has come up, so there must be something else unusual going on here. If no one could install packages on Windows 10, we'd have heard ab
86.
▲
by
StefanKarpinski
5y ago
Always good to attract experts from other languages. I was mainly addressing the claim that Julia core devs like to crap on other languages, not trying to claim that we're experts in every language — obviously we're not. But sayin
87.
▲
by
StefanKarpinski
5y ago
Quite a bit: several of the Julia compiler team are LLVM maintainers and contributors. LLVM has started to track compile time, so that's gotten a bit better with recent releases. Making noise about compile time was mainly to get the LL
88.
▲
by
StefanKarpinski
5y ago
The announcement post for Julia was literally about all the things we love in other languages: https://julialang.org/blog/2012/02/why-we-created-julia/
89.
▲
by
StefanKarpinski
5y ago
It’s not really a problem with dynamism, it’s more about the fact that Julia’s compilation model is similar to C++ with templates but at runtime (and with first class parametric types instead of textual substitution, but the compilation and
90.
▲
by
StefanKarpinski
5y ago
Using LLVM is not exactly an indelible architectural decision — switching to a bespoke JIT would be entirely possible, it’s just not worth it yet. Moreover, if you want to generate world-class high speed code, you really need something like
More ›