Now that Sage 4.3 was released, maybe it’s time to point out some of the cool recent developments. Of course the following list is very very biased.
- libSingular functions interface. We now have some code which makes it possible to call any function available in Singular using the libSingular C wrapper directly, like this.
sage: P = PolynomialRing(GF(127),10,'x') sage: I = Ideal(P.random_element() for _ in range(3000)) sage: from sage.libs.singular.function import singular_function, lib sage: groebner = singular_function('groebner') sage: %time groebner(I) CPU times: user 0.07 s, sys: 0.00 s, total: 0.08 s Wall time: 0.08 s 
For comparison, the Singular pexpect interface needs almost two seconds for the same task (due to string parsing on both ends, IPC, etc.)
sage:%time groebner_basis() CPU times: user 0.96 s, sys: 0.24 s, total: 1.21 s Wall time: 1.92 s 
Michael Brickenstein wrote a lot of this code, so three cheers to him!
- linear algebra over F_2 got better. For once, we implemented vectors over F_2 on top of M4RI matrices (cf. #7715), which makes them much faster. Furthermore, we call more dedicated M4RI functions now instead of the generic slow functions available for all fields (cf. #3684). Finally, asymptotically fast matrix factorisation got faster again. However, we still didn’t switch to this implementation as the default implementation because of the slow-down for sparse-ish matrices: use the algorithm=’pluq’ option to force the new implementation.
PolyBoRi was updated to version 0.6.3 and the interface received some considerable update too during a visit to Kaiserslautern. Please, please, please report any regressions etc. either to me, to [sage-support] or to [polybori-discuss].didn’t make it, cf. #7271
- Linear Programming is now available in Sage (though it requires to install at least one optional package). Still, this opens up quite a few possibilities (cf. Nathann Cohen’s tutorial).