-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Talk 6: Edward Yang #6
Comments
I think the focus on Haskell exclusively makes it seem a bit more parochial than it is -- Java, JS, and all the other managed languages have the same problem! Maybe if it's just "for instance" Haskell, with a gesture at the generality... |
minor note: CNF summary slide came up just before the 6 minute mark. I guess I would like to hear a punchier statement of "send things over the network in their in-memory format" somewhere earlier... |
On the API example slide -- explaining the omitted initial object with a sentence may take more airtime than just having the initial object there but not talking about it... |
The slide titled "Compaction" that talks about copying into the region "unless its already" there -- it has |
How does append not let you violate the type of region internals? It's not clear what you mean by "a region for each data structure". |
Question: "Do you have any plans to extend this to support types with no thunks, that are always in NF? These would seem to be more likely with the upcoming |
"Safety?" slide -- I was a bit confused by the visual metaphore here. What are the scribbles inside the circle? The whole heap? |
The default Java serializer is well-known to be orders-of-magnitude worse than good Java serialization libraries. |
"Serialization benchmark" -- which data type is this? It says "number of leaves" but I don't think you mentioned what the data is. |
Don't assume you'll be able to point at the screen in an effective way. |
"Size blow up!" -- might be nice to list the 10Gbit number instead of 1GBit... We tested on 10G anyway, right? |
@samth - you don't think a laser pointer will do it? Or you're anti-laser pointer? (Because of looking away from audience?) |
@rrnewton Sometimes laser pointers are very hard to see. |
I love the hand-drawn slides! The conversational, story-telling nature of the talk made it easy to stay engaged. On the Serialization benchmark slide, the y-axis was labeled slowdown, but you were talking about speedups. I also wasn't sure what "Binary" referred to in the results. |
Question by @ccshan -- confused about the use case. Does a distributed computation "just in time" compact before it sends over the network? Ed's answer -- in the "pessimal case" you have to compact on send. The trick though is that the data in compact form is still "data you can process in the normal way", you can "amortize the cost of compacting over multiple sends". In some cases you can "already have this compact data lying around so you can use it". |
Question: how would we do this in OCaml? |
Question by @samth -- "this seems like in principle it could be used in other functional languages, but some details seemed like they relied on Haskell specifics. What would it take to adopt this in OCaml?" Ed's answer: The biggest challenge is purity. Purity is how we enforce no mutable data in the compact region. If you had some way of checking the data should not be mutable, even at runtime, you could do it." Sam followup: but IORef is just a type of data. Ed: Compactable class manages this, Compactible instances are part of the trusted code base. Sam: But then what is purity buying you? Ed: I guess technically it doesn't buy you anything. Sam: so type classes in OCaml would be one way... |
Missed a bit of audio on Ed's response to Cameron... maybe can mention what that was here. |
from @samth: why do you need IO on the compaction methods? Ed: it could be referentially transparent... but you want it to only happen once. Ken: something having performance implications should be no reason to put it in IO! Otherwise multiplication should be in IO. Ed: It doesn't need to be in IO... it just needs to be in some monad that preserves ordering and prevents unsharing. |
My question was: "Is there an alternative garbage collection strategy that can alleviate some of the problems?" |
@cgswords Hey Cam, thanks for your feedback. You commented 'How does append not let you violate the type of region internals? It's not clear what you mean by "a region for each data structure".'; do you remember enough to elaborate more? I'm not completely sure what the confusion here is, but I'd like to fix it. |
Practice talk time -- 19:15
The text was updated successfully, but these errors were encountered: