Hi everyone, I've been talking with Karl about making a Kotlin api part of the library. I'm posting this to sketch out the approach I plan to take and get any feedback or requested additions. In general, my strategy is to depend on the java api and make as few additions as possible, mostly using thin wrappers and extensions.
Ops methods
Generate an idiomatic Kotlin set of Ops classes. The main change will be using parameters with default arguments (of null) instead of Options.
Extension methods on Operand<T>
Things like +, sum, eq, matMul. Generally, I'd seek to replicate numpy's ndarray API. These are not possible currently as they require Operand and Ops as receivers. We should get a multiple receivers prototype in 1.5 (March), I'll revisit this then.
Nullability
Utilities
Small extension functions for APIs that are particularly un-kotliny. Largely dependent on user issues as they use the library in Kotlin and report things that feel un-kotliny. We would want to mention this in the README. Would include things like shape/rank/size property extensions for Shaped, invoke operator using call for framework Activations, etc. There isn't really any overarching design here, just addressing pain points. Please post anything you would want to be covered by this.