in which Shapeless is only threatened to be discussed.
- Josh & co have 900,000 lines of open source Scala code compiling on 2.11.0-RC3
- does 2.10.4 support Java 8? as far as we know. (Daniel had bytecode validation problems with 2.10.1)
- scalac can't handle Java 8 sources yet
- have we tried Java 8 language features? no, that would require us to use Java
- no more PermGen! (= thrash and fail later, instead of fail early?) the world needs more PermGen.
- Seth likes using Nashorn to test his CoffeeScript and JavaScript code without leaving the Scala ecosystem
- Josh says the Play framework guys are hooking up different JS engines (including Nashorn and V8) to sbt
- name-hashing (Grzegorz Kossakowski) in 0.13.2 should “dramatically improve” performance on incremental compilation, says Josh
- except for Daniel
- sbt 0.13.5 (previewing sbt 1.0) will fragment sbt so everything will be a plugin
- binary compatible with existing 0.13 plugins and projects
- only Dick didn’t go but next year will be at Dick’s house and we’ll drink all his wine
- love from Daniel for nescala audiences willing to follow him into crazyland
- Daniel’s nescala day 2 conversation with Lars H, Paul C, Rúnar B, Brian M, Tim P, et al debating the future of Scalaz’s IO monad
- IO being replaced with Task. IO falls out as a special case
- trampolined computations are suspendable and resumable
- not just for avoiding stack overflow
- comparison with Future (Task doesn't start running right away)
- free generalizes trampolining
- build up computations as graphs to be evaluated later. your program writes a program
- tasks can run sequentially or in parallel
- in what sense is this nondeterminism?
- (tpolecat on IRC: “parallel applicative composition is nondeterministic if your actions are side-effecting, which they are in IO. that's the whole point”)
- Dick gave a talk at Bay Area Scala about scalaz-stream
- He worked on a project (with Rúnar et al) supporting bioinformaticians
- Providing them with a high-level API similar to the Scala collections
- Hit a bug where some tasks were evaluated too eagerly during cleanup and fallback
- Difficulties debugging code where execution is dispersed across multiple threads
- Except Josh, he never has any trouble
- Josh: Iulian Dragos’s work on debugging in an asychronous world
- Daniel’s pie-in-the-sky ideal debugger
- Scalive — attach a Scala REPL to any already-running JVM “without any prior setup”
- by Ngoc Dao, https://twitter.com/ngocdaothanh
- https://github.com/ngocdaothanh/scalive
- discussion on tech details
- limitation re: classloaders
- Dick sheds a tear for Smalltalk
- Seth sheds a tear for Macintosh Common Lisp
- Daniel hearts JRebel
- Seth: Scala REPL as tool for exploring code fails if anything in your code isn’t public
- if the REPL could switch packages, that would help
- or even switch into a specific class?
- Josh: you can do
setAccessible(true)
- mpilquist on IRC: “would be straightforward to give access to private methods using Dynamic that sets accessible and invokes reflectively”)
- “public by default” and “binary compatibility” are enemies
- Josh: don't make access impossible, just make it feel evil
- making everything public can restrict freedom for an API to change
- on sbt Josh uses
private[sbt]
to mark code that may change. people are free to dopackage sbt
to get in there.
- Dick is unrepentant about ScalaCheck
- Seth invites ScalaCheck lovers to publish their experience reports on the typelevel.org blog
- (Lars H said at NE Scala that their blog seeks case studies and experience reports from users of typelevel libraries)
- Daniel: ScalaCheck is great for testing a codec (serialization/deserialization)
- Josh runs a miiiiiiiiillion ScalaCheck cases
- shhhhh, the partiality monad is the same as the trampoline monad, but don't tell anyone Daniel said so
- Daniel: don't just generate random cases from nothing; randomly fuzz your handwritten cases
- Josh (& Daniel): if ScalaCheck regression testing is too slow, segregate it from your fast unit tests. save it for PR validation
- let's talk about Shapeless next time?