C$mcI$sp C$mcJ$sp C[T] C$mcD$sp … and 7 others What is the field t In this class? Actually there are two fields: a generic one from C and a specialized one
C$mcI$sp C$mcJ$sp C[T] C$mcD$sp … and 7 others What is the field t In this class? Actually there are two fields: a generic one from C and a specialized one That's bad: we waste memory SI-3585
Know the conditions for method specialization - class specialization Initialize specialized values outside constructor body Resolve access problems using the package-private modifier Use traits where possible Avoid traits where possible Make your classes as flat as possible Avoid super calls Be wary of vars Think about the primitive types you really care about Avoid using specialization and implicit classes Alex Prokopec, axel22.github.io
Know the conditions for method specialization - class specialization Initialize specialized values outside constructor body Resolve access problems using the package-private modifier Use traits where possible Avoid traits where possible Make your classes as flat as possible Avoid super calls Be wary of vars Think about the primitive types you really care about Avoid using specialization and implicit classes Alex Prokopec, axel22.github.io
Know the conditions for method specialization - class specialization Initialize specialized values outside constructor body Resolve access problems using the package-private modifier Use traits where possible Avoid traits where possible Make your classes as flat as possible Avoid super calls Be wary of vars Think about the primitive types you really care about Avoid using specialization and implicit classes Alex Prokopec, axel22.github.io
Know the conditions for method specialization - class specialization Initialize specialized values outside constructor body Resolve access problems using the package-private modifier Use traits where possible Avoid traits where possible Make your classes as flat as possible Avoid super calls Be wary of vars Think about the primitive types you really care about Avoid using specialization and implicit classes Alex Prokopec, axel22.github.io = fixed by the 0.4 release
the initial prototype, as a semester project • Eugene Burmako - the value class plugin based on the LDL transformation • Aymeric Genet - developing collection-like benchmarks for the miniboxing plugin • Martin Odersky, for his patient guidance • Eugene Burmako, for trusting the idea enough to develop the value-plugin based on the LDL transformation • Iulian Dragos, for his work on specialization and many explanations • Miguel Garcia, for his original insights that spawned the miniboxing idea • Michel Schinz, for his wonderful comments and enlightening ACC course • Andrew Myers and Roland Ducournau for the discussions we had and the feedback provided • Heather Miller for the eye-opening discussions we had • Vojin Jovanovic, Sandro Stucki, Manohar Jonalagedda and the whole LAMP laboratory in EPFL for the extraordinary atmosphere • Adriaan Moors, for the miniboxing name which stuck :)) • Thierry Coppey, Vera Salvisberg and George Nithin, who patiently listened to many presentations and provided valuable feedback • Grzegorz Kossakowski, for the many brainstorming sessions on specialization • Erik Osheim, Tom Switzer and Rex Kerr for their guidance on the Scala community side • OOPSLA paper and artifact reviewers, who reshaped the paper with their feedback • Sandro, Vojin, Nada, Heather, Manohar - reviews and discussions on the LDL paper • Hubert Plociniczak for the type notation in the LDL paper • Denys Shabalin, Dmitry Petrashko for their patient reviews of the LDL paper Special thanks to the Scala Community for their support! (@StuHood, @vpatryshev and everyone else!)