Merge pull request #26 from aewag/develop
[tomsfastmath.git] / changes.txt
blob4f86bb91f1b52d6dbdcd7425ba882dc5215522d4
1 April 4th, 2017
2 v0.13.1
3      -- Fix missing fp_rand symbol in shared library
4      -- Fix some parameters in API signatures that should've been const
5      -- Bugfixes and improvements contributed by Sebastian Siewior, Reiner Herrmann and Mathias Tausig
7 October 24th, 2015
8 v0.13.0
9      -- Add fp_rand()
10      -- Fix bug in fp_sub() reported by Martins Mozeiko
11      -- Fix bugs/apply patches in fp_mul() and fp_sqr() reported by rasky
12      -- Fix bugs in fp_read_radix()
13      -- Fix build issues for Linux x32 ABI
14      -- Sebastian Siewior provided fp_toradix_n(),
15         reported multiple issues on behalf of ClamAV
16         and did most of the testing work to be able to push this release out.
17      -- Fix a load of compiler warnings.
19 March 14th, 2007
20 0.12 -- Christophe Devine contributed MIPS asm w00t
21      ++ quick release to get the MIPS code out there
23 March 10th, 2007
24 0.11 -- re-org'ed the source tree, it's cooler now
25      -- cleaned up mul/sqr so there is only one file per unit, should help building with older compilers and/or on slower boxes
26      -- [CRI] optimized fp_read_unsigned_bin
27      -- fixed -0 ... again ... I now have less hair on my head.
28      -- [CRI] renamed bn_reverse() -> fp_reverse()
30 November 1st, 2006
31 0.10 -- Unrolled Montgomery for 1..16 digits with TFM_SMALL_MONT_SET between 10% and 25% speedup depending on size.
32      -- fixed fp_sqr_comba.c so it builds in ISO C mode [Andreas Lange]
33      -- cisc@broadpark.no pointed out fp_radix_size() had a few typos that affected correctness.  Fixed.
34      -- Added support for ECC performance, e.g. define "-DTFM_ALREADY_SET -DTFM_ECC192" and it will disable
35         all of the unrolled code EXCEPT what is required for ECC P-192.  It autodetects 32/64-bit platforms too.  It's super neato.
36         Support for 192, 224, 256, 384 and 521 bit curves through the defines [see tfm.h]
37      -- AVR32 support added, define TFM_AVR32 to enable
39 April 4th, 2006
40 0.09 -- Bruce Guenter suggested I use --tag=CC for libtool builds where the compiler may think it's C++.
41      -- Added support for k=1 in exptmod for RSA exponents.  Makes it more competitive with other libraries
42      -- added cutoffs to the comba32 sqr/mul code to better handle 640, 786 and 896 bit operands (e.g. for RSA-1280, RSA-1536 and RSA-1792), really no effect
43         for 64-bit boxes as these represent 1280, 1536 and 1792 bit operands (not likely to be invoked).
44      -- Removed karatsuba from the mul/sqr since they're not useful and slow.
45      -- added 20, 24 and 28 digit multipliers for oddsized RSA support.  You can easily disable them by uncommenting the TFM_SQRXX and TFM_MULXX lines in 
46         tfm.h to save space.  Now GMP and TFM are roughly the same speed on the Pentium-M for RSA with LTC.
47      -- unrolled SSE2 code and optimize for platforms with load/store pipes (e.g. can store and load in a cycle).  Got 4% or so boost on my Dothan laptop (marginal improvement on a P4 Prescott)
49 Jan 26th, 2006
50 0.08 -- Fixed a bug in the generic mult/sqr where we overflowed by one digit
52 November 18th, 2005
53 0.07 -- Fixes to fp_mul and fp_sqr to clean up the handling of the defines, fix to tfm.h to also clear up the prototypes.
54      -- Updates to build and run on a IBM PPC 405 [using GCC 3.4.4]
55      -- Made the "make" command renamable in the build system
57 October 31st, 2005
58 0.06 -- fixed fp_mul() and fp_sqr() to trim digits when overflows would occur.  Produces numerically inprecise results
59         (e.g. the lower FP_SIZE digits) but shouldn't segfault at least ;-)
60      -- Updated the combas so you can turn on and off specific unrolled loops at build time 
61      -- Michael Heyman reported a bug in s_fp_sub() that was pretty substantial and a bug in fp_montgomery_calc_normalization().  Fixed.
63 August 1st, 2005
64 0.05 -- Quick fix to the fp_invmod.c code to let it handle even moduli [required for LTC]
65      -- Added makefile.shared to make shared objects [required for LTC]
66      -- Improved makefiles to make them way more configurable
67      -- Added timing resistant fp_exptmod() enabled with TFM_TIMING_RESISTANT
69 July 23rd, 2005
70 0.04 -- Fixed bugs in the SSE2 squaring code
71      -- Rewrote the multipliers to be optimized for small inputs 
72      -- Nelson Bolyard of the NSS crew submitted [among other things] new faster Montgomery reduction
73         code.  It brings the performance for small numbers on the AMD64 and all numbers on the P4
74         to a new level.  Thanks!
75      -- Added missing ARM support for fp_montgomery_reduce.c that the NSS folk left off, Officially 
76         the ARM code is for v4 and above WITH the "M" multiplier support (e.g. umlal instruction)
77      -- Added PPC32 support, define TFM_PPC32 to enable it, I used the "PowerPC 6xx" instruction
78         databook for reference.  Does not require altivec.  Should be fairly portable to the other
79         32-bit PPCs provided they have mullw and mulhwu instructions.
80         [Note: porting the macros to PPC64 should be trivial, anyone with a shell to lend... email me!]
81      -- Rewrote the config a bit in tfm.h so you can better choose which set of "oh my god that's huge" code to 
82         enable for your task.  "generic" functions are ALWAYS included which are smaller but will cover the
83         gaps in the coverage for ya.
84      -- The PPC32 code has been verified to function on a Darwin box running GCC 2.95.2 
85         [Thanks to the folk at PeerSec for lending me a shell to use]
86      -- Fixed a bug in fp_exptmod() where if the exponent was negative AND the destination the output
87         would have the sign set to FP_NEG.
89 March 1st, 2005
90 0.03 -- Optimized squaring
91      -- Applied new license header to all files (still PD)
93 September 18th, 2004
94 0.02 -- Added TFM_LARGE to turn on/off 16x combas to save even more space.
95         This also helps prevent killing the cache on smaller cpus.
96      -- Cast memset to void in fp_init() to catch people who misuse the function (e.g. expect return)
97         Thanks to Johan Lindh
98      -- Cleaned up x86-64 support [faster montgomery reductions]
99      -- Autodetects x86-32 and x86-64 and enables it's asm now 
100      -- Made test demo build cleaner in multilib platforms [e.g. mixed 32/64 bits]
101      -- Fix to fp_mod to ensure that remainder is of the same sign as the modulus.
102      -- Fixed bug in fp_montgomery_calc_normalization for single digit moduli
103      -- cleaned up ISO C macros in comba/mont to avoid branches [works best with GCC 3.4.x branch]
104      -- Added more testing to tfm.h to help detect misconfigured builds
105      -- Added TFM_NO_ASM which forces ASM off [even if it was autodetected].
106      -- Added fp_radix_size() to API
107      -- Cleaned up demo/test.c to build with far fewer warnings (mostly %d => %lu fixes)
108      -- fp_exptmod() now supports negative exponent and base>modulus cases
109      -- Added fp_ident() which gives a string showing how TFM was configured.  Useful for debuging... 
110      -- fix gen.pl script so it includes the whole source tree now 
112 August 25th, 2004
113 0.01 -- Initial Release