Why do `A_mul_Bc` and `A_mul_Bt` belong to `Base`, while `A_mul_B!` lives in Base.LinAlg?

Searching A_mul_B in Julia Doc gives me the following results:

Base.A_mul_Bc(Function)
Base.A_mul_Bt(Function)
Base.LinAlg.A_mul_B!(Function)
...

So I wonder why A_mul_Bc and A_mul_Bt belong to Base, while A_mul_B! lives in Base.LinAlg? Thanks!

I don’t know the reason for that. But there is a big change of these things in 0.7: https://github.com/JuliaLang/julia/pull/24969

2 Likes

Thanks for the pointer. I also quickly read the rationale behind this PR, but how are these routines re-grouped and re-affiliated now? Do you by chance know?

A bit surprisingly, it took 3 years for this issue to be addressed. This must be a colossus!

AFAICT the notation is shifted to wrappers, ie the type system. Eg wrapping a matrix in Transpose now indicates that it should be transposed, etc.

I think that this is a very elegant solution. See the discussion for #4774 for some more history.

Thanks for the comment. It took me forever to read the almost-endless thread of #4774. :joy::joy:

Here’s a summary: https://www.youtube.com/watch?v=C2RO34b_oPM

1 Like

Thanks buddy! Watching now. I wish you could have hinted me a hour ago so that I could have lived a slightly easier life in the last hour.:joy::joy:

1 Like

Btw, when will v0.7 be rolled out? I quickly checked the announcement section and saw none relevant.

Or no more releases before v1.0?

Don’t know. Feature freeze should be tomorrow: 1.0 Feature Freeze Dec 15th

1 Like