Skip to content

Remove Cassette and define promotion rules #16

@oxinabox

Description

@oxinabox

This is the "proper" way to solve #5,
since it will let us avoid all the recompilation stuff.
And it makes the code less "magic"

From @ararslan in JuliaDiff/ChainRules.jl#37 (comment)

According to @jrevels, the use of Cassette in this package is purely an implementation detail and could be replaced with regular ol' multiple dispatch. The reason why Jarrett didn't do that to begin with is it requires defining a fair number of methods to resolve ambiguities between the various differential types, rule types, etc. I think going that route will be a cleaner solution overall than replacing the dependency on Cassette with on one IRTools.

See old PR JuliaDiff/ChainRules.jl#38

I am not 100% convinced this is required, particularly if we can just @inline our overdubs and make the compiler optimize them out of existance.

But it is something we should think about.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions