A lot of the conventions for numerical linear algebra have been around for a long time and it’s usually a good thing to have implementations be consistent with these, so it’s not like Julia decided to do something here that’s unusual. Also often these algorithms call lower level algos like in this case Lapack’s dgesv.
With numpy
for instance:
>>> import numpy as np
>>> a = np.array([[1, 0],[0, 0]])
>>> b = np.array([1,0])
>>> np.linalg.solve(a, b)
(...)
raise LinAlgError("Singular matrix")
numpy.linalg.LinAlgError: Singular matrix