The Tensar package is the first software that I have publically released, so please be gentle. It is my attempt to solve the following problems:

I have a n×n matrix that discretises d/dx. I am trying to compute the curl of a 3D field, stored in an n×n×n array. I have read
@doc kron
a dozen times in the last hour, my whiteboard is covered in block matrix diagrams, and I still can’t get it right. 
Tensors (in the mathematical sense) are a great idea. Einstein notation is a genius way to manipulate them on paper, but it always seems clumsy when implemented in a computer language.

The up and down tuples from Scmlib were a really promising idea, and no one else has ported them to Julia yet.

In scientific computing, linear is a very important special case. Julia should have a standard way to declare which arrayvalued functions are linear, instead of DifferentialEquations having its own way, and every other project having its own different way.
This is research software for now, and the implementation is a proof of concept. There is no guarantee that it works for anything except the examples in the README.
I welcome any feedback, and I’d especially like to hear the following:

I’m reinventing the wheel, and here’s a link to a tyre shop.

Scmlib had a clever and elegant way of doing X, which I have failed to understand and have replaced with an ugly kludge.

This would be useful for package X, but only if it could do Y.

There is a way to generalise this to tuples of differentsized arrays, without making it an order of magnitude more confusing.