@@ -81,6 +81,57 @@ or Dotty) to identify what can be re-used.
81
81
82
82
Supervised by [ @densh ] ( http://github.com/densh )
83
83
84
+ ### Scala Debugging in ENSIME
85
+
86
+ ENSIME is a kind of scala language server and has the potential to
87
+ provide all text editors with a compelling debugging experience in
88
+ Scala.
89
+
90
+ The experimental ENSIME debugger has problems: breakpoints often miss
91
+ and heuristics - to convert between scala and JVM bytecode names -
92
+ often fail. There is no support for scala expression evaluation in the
93
+ debugging context.
94
+
95
+ In this project we would rewrite the debugger to make use of ENSIME's
96
+ name conversion utilities (powered by the scalac interactive
97
+ compiler), add expression evaluation, and the user interface
98
+ for (at least) one of the editors. The candidate is free to choose to
99
+ implement for either Emacs, VSCode, Vim, Atom or Sublime.
100
+
101
+ http://ensime.org/
102
+
103
+ Supervised by * [ @fommil ] ( https://github.com/fommil ) * and
104
+ * [ @chipsenkbeil ] ( http://github.com/chipsenkbeil ) * .
105
+
106
+ ### Case classes a la carte with scala.meta
107
+
108
+ ` case class ` es are a very useful feature of the scala language, but
109
+ can be limiting. For example, there is no way to write a custom
110
+ interning (memoization) technique or modify the internal
111
+ representation of a case class, leading to heap usage problems for
112
+ larger applications that generate hundreds of millions of instances (a
113
+ common problem in monolithic financial services applications).
114
+
115
+ In this project we would introduce a ` @data ` annotation, as a
116
+ user-land alternative to ` case class ` . The default implementation
117
+ would have feature parity with ` case class ` but opt-in features
118
+ include: interning (backed by a fast, concurrent, weak hashset,
119
+ allowing for super-fast instance equality), hashCode caching, fast
120
+ value equality (backed by instance ids and a cache of previous
121
+ equality tests), unboxing of Options and primitives (each unbox saving
122
+ 64bits per instance), all the way to FastInfoSet-style custom
123
+ compression dictionaries (e.g. for Strings).
124
+
125
+ Another usecase would be to allow for automatic typeclass derivation
126
+ of well-known typeclasses, placed on the companion. e.g.
127
+ ` LabelledGeneric ` , ` Show ` , ` Lens ` . This would speed up compilations of
128
+ downstream code (for example, currently shapeless uses a macro to
129
+ generate a ` LabelledGeneric ` for a case class on every usage site, but
130
+ with this approach there is no derivation necessary).
131
+
132
+ Supervised by * [ @fommil ] ( https://github.com/fommil ) * with support from
133
+ * [ @xeno-by ] ( https://github.com/xeno-by ) * .
134
+
84
135
### Dotty Documentation Compiler ###
85
136
86
137
[ Dotty] ( http://dotty.epfl.ch ) is the future Scala compiler developed at EPFL.
0 commit comments