[Note: newer entries are at the bottom]

The actual patches and their series are in the tarball:  patches.tar.gz

Early prehistory:

- Fix some warnings
- Add const to global variables and prototypes
- Document numa_warn
- Add numa_distance() support to read topology
- remove internal alias from numa_{warn,error} to allow overwriting
  again
- Various bug fixes
- add -f option to memhog to map file
- more bugfixes
- replace forward backward with STREAM test in numademo

0.6.1

- make headers C++ clean

0.6.2 

- use more accurate buffer length for cpumask
- add --cpubind to test suite

0.6.3

- fix cpumask parser for large number of cpus.
Note that you need a kernel patch (as of 2.6.7-pre) for that too
if the cpumask is longer than 99 characters.

0.6.4

- Add Copyright headers

0.6.5

- Reduce unneeded DSO relocations (Arjan van de Ven) 
- Add -r option to memhog (repeat walk) 
- some manpage fixes
- Use syscall numbers from asm/unistd.h if possible
- Add numa_node_size64 to handle large nodes on 32bit architectures
- Fix numactl to use it (report from Rajan Ravindran) 
- Use ln -sf in make install (Rajan Ravindran)
- Add syscall numbers for ppc/ppc64
- Add private syscall6 for i386 since the glibc version is broken
- Remove STUB
- Change numactl --show to use cpubind instead of nodebind for CPU affinity.
- Fix make install into examples directory
- Work around broken sched_set_affinity API. This adds a 32768 CPUs limit.
- Fix segfault with /sys not mounted.
- Clean up Makefile
- Make numactl --show more clever

0.7-pre1

- add test/regress2 and some fixes to test programs
- Fix DSO relocation patch for global variables
- Change nodeset sizes back to be binary compatible with SLES9
- Cosmetic changes to manpages (pointed out by Eric S. Raymond) 
- Make numa_run_on_node etc. act on current thread only even on NPTL systems
  (Dinakar Guniguntala)
- Make numa_no_nodes / numa_all_nodes const (Werner Almesberger) 
- Fix up the warnings caused by above change
- Add numa_distance() on systems with ACPI
- remove some obsolete code
- add rdtsc for ppc64
- fix unsigned/unsigned long confusion in cpumasks (Matt Dobson)
- fix CPU_BYTES and rename CPU_WORDS to CPU_LONGS (Matt Dobson) 
- Print node distances in numactl

[0.7 skipped]

0.8
- hardend numactl command line parsing against bad arguments in some cases
- remove cpumask/nodemask confusion which has become a FAQ:
  --cpubind deprecated, added --cpunodebind and --physcpubind= options
  print both in --show, old cpumask kept for compatibility
- Fix --show problems
- various fixes for bugs noted by Mike Stroyan (thanks!)
- install set_mempolicy manpage
- various smaller fixes

0.9
- Get rid of bogus distance.o that broke compilation on !x86-64 (sorry)
- Handle CFLAGS overriding without OPT_CFLAGS (Ian Wienand)
- Fix up section of get/set_mempolicy (Ian Wienand)
- When no NUMA available fall back to one global node instead of one node
per CPU (Samuel Thibault)
- Don't rely on architecture symbols for dependency generation
- Use __powerpc__ to detect PPC/PPC64
- numastat: 
  * wrap display properly with many nodes
  * display nodes in forward order
  * install manpage in `make install'.
- remove bogus numamemcpy.c
- numademo: 
  * allow standalone compile, make streamlib optional
  * clean up output
  * change output unit to standard MB/s
  * compile with more optimization
  * add random pass to fool any prefetching (slow)
- make numademo compileable outside source tree
- use gettimeofday instead of time stamp counters in benchmarks
- support valgrind in testsuite
- other minor changes

0.9.1
- Make automatic selection of lib64 vs lib more robust. Now should work
even on ppc32 with a lib64 directory. Architecture lists are hardcoded now
unfortunately.

0.9.2
- Fix compilation on architectures with gcc 3.3+ but without TLS
(MIPS, Alpha, Sparc) 
- Add warning against using of MPOL_F_NODE
- numa.3 improvements from Michael Kerrisk
- Support page migration (migratepages, manpages) from Christoph
Lameter. Requires 2.6.16+ kernels

0.9.3
- Some more manpage fixes
- install migratepages manpage in make install
- Build fix for Debian make from Ian Wienand

0.9.4:
- Remove syscall manpages. They're in main man-pages now.
- More migrate fixes from C.Lameter

0.9.5:
- Fix parsing of cpumap in sysfs from Doug Chapman

0.9.6:
- Fix make install again

0.9.7
- Fix cpumap parsing fix to not corrupt memory (Doug Chapman) 
- Small optimization to cpumap parsing
- Create target directories for Debian (Ian Wienand)

0.9.8
- Fix cpumap parsing again (Doug Chapman)

0.9.9 (aka "Will 1.0 ever happen?") 
- Fix sizing of cpu buffers for affinity syscalls
- Don't corrupt errno in numa_run_on_node_mask. This fixes
numactl cpubind issues on some systems.
- Print cpus belonging to nodes in numactl --hardware
- Rewrite cpumap parser to be simpler and hopefully finally work
in all cases
- add testcases for cpu affinity and topology discovery
- Add make test target to run regression test easier and fix up
test/README

Lots of fixes thanks to thorough testing by Noriyuki Taniuchi:
- Better command line parsing in numactl and fix various documentation bugs
- Wrong arguments to --prefered don't crash numactl anymore
- Fix --cpunodebind=all
- Auto collect short option list in numactl - a couple were missing.
- Fix documentation of numa_set_localalloc. It doesn't have a flag. 
- Fix numa_run_on_node(-1)
- numa_get_run_node_mask(): Fix documentation, don't warn

0.9.10:
- Fix cpumap parsing bug when NR_CPUS < 32 (dean gaudet)  

0.9.11
- Fix usage output for --shmid (Noriyuki Taniuchi)
- Use correct syscall number for migrate_pages() on PPC
 
1.0
- Add sleep to regression test to work with delayed statistic
updating in newer kernels (Mel Gorman) 
- Default to -O2

1.0.1
- Fix build on powerpc

1.0.2
- Fix parallel Makefile build (Andreas Herrmann)
- Fix target command argument parsing for numactl (no -- needed again anymore) 
- Clarify numa_node_to_cpus() manpage

1.0.3

- Add the migspeed test program to test the speed of migrating pages from
  one node to another
- Support for move_pages(2) to numactl, and numa_move_pages() to libnuma
- Add the move_pages test command to exercise the move_pages(2) system call
- Add the mbind_mig_pages test command to verify the moving of a task's
  pages with move_pages(2)
- Add the migrate_pages test command to test that a task's pages can be
  moved with move_pages(2)
- Support numactl +nn syntax for cpuset_relative cpu and node numbers
- Modify libnuma to use variable-length bit masks (the bitmask structure)
- Modify numactl, migspeed, memhog, migratepages, numademo and stream_main
  to use variable-length bit masks
- Modify the test/ programs to use the libnuma that uses variable size bit masks
- Version 2 (symbol versioning)
- Man page changes with the change to variable-length bit masks, move_pages
  migrate_pages and others

2.0.0
- Added API version 2 and symbol versioning.  This provides binary
  compatibility with old codes that use libnuma.
- Brought the man page in line with the version 2 changes.
- Provide numacompat1.h and additions to numa.h, which provide source code
  compatibility to libnuma version 1.  (The application progamming interface
  changes, but the ABI is preserved through the use of symbol versioning. So
  the library stays libnuma.so.1)
- Added variable-length bit masks to libnuma.  These are struct bitmask.
  This allows libnuma to be independent of ever increasing cpu counts.
  o Modified the test/ programs to use variable size bit masks.
  o Modified numactl, migspeed, memhog, migratepages, numademo and stream_main
    to use variable-length bit masks.
- Added support for move_pages(2) (sys_move_pages()) to numactl.  Adds
  numa_move_pages() to libnuma.
  o Added the mbind_mig_pages test command to verify the moving of a
    task's pages with move_pages(2).
  o Added the move_pages test command to exercise the move_pages(2) system call.
  o Added the migrate_pages test command to test that a task's pages can
    be moved with move_pages(2).
  o Added the migspeed test program.  It tests the speed of migrating pages
    from one node to another.
- Allow a numactl +nn syntax for cpuset_relative cpu and node numbers.
- General cleanup of man page.
- Return nodes allowed by the application's current cpuset context via new
  API numa_get_mems_allowed().
- Change numa_alloc_local() to use MPOL_PREFERRED with NULL nodemask to
  effect local allocation.
- Man page for numactl: numa_maps man page clarifications and cleanup
- Minor cleanups of numademo.c
- Fix numastat sysfs scanning in numactl
- Reorganize the regress test script.
- Fix mempolicy regression test for assymetric platforms and memoryless nodes.
- Fix checkaffinity and checktopology regression tests.
- Fix the __NR_migrate_pages system call number.
- Fix the way numactl handles the building of the mask when executing
  the --physbind option, and the way Cpus_allowed mask is created.

2.0.1
- Fix bug in dombind (when passed a null)
- Make 4 fixes from Debian: MIPS support, MIPS hppa fix for syscalls,
                            make sure -lm for numademo, build a static library 
- Fix parsing of /proc/self/status for 2.6.25 additions to it

2.0.2
- Various numademo improvements:
  * Fix random benchmark to use all specified memory
  * Rename to random2 to signify it's different
  * Optimize random benchmark by inlining random number generator fast path.
  * Clear caches between runs for more stable results
  * Add new random pointer chaser benchmark
  * Compile benchmarks with gcc vectorization if available
  * run numademo in regression test
- Add numa_exit_on_warn
- Fix no cpuset fallback in libnuma.c
- Install symlinks for the manpages of all new functions
- Make internal libnuma functions static
- Add copy_bitmask_to_bitmask() to numa.h
- Some cleanups
- Fix line reading in proc
- Add versions.ldscript to libnuma.so dependencies
- Remove the non-"numa_" functions from numacompat1.h and numa.h
- Add ia64 clearcache() to numademo
- Add -t to numademo for regression testing
- Remove "numa_all_cpus" from numa.h
- Changed VERSION1_COMPATIBILITY to NUMA_VERSION1_COMPATIBILITY
- Defined LIBNUMA_API_VERSION 2 in numa.h
- Fix numaif.h and numaint.h (migrate_pages; from Masatake Yamato)
- Fixes to numademo (min/max, and array index; from Kent Liu)
- Fixes to Makefile and permissions; from Berhard Walle

2.0.3-rc1 - rc3
- Fixes to libnuma.c numa.h numacompat1.h by Daniel Gollub to fix v1 compatiblity
- Restore nodemask_zero() and nodemask_equal()
- Drops a warning message about this not being a NUMA system
- Remove the numa_maps.5 man page (it's in Linux now) (by Bernhard Walle)
- Fix makefiles in tests (Andi)
- Fix off-by-ones in test mbind_mig_pages (Andi)
- Fix test/prefered.c (Andi)
- Fix to print_node_cpus() (Arnd/Bill Buros)
- Fixes to read_mask()  (Arnd's on top of cpw's)
- Fix to makefile (LDFLAGS/LDLIBS/AR/RANLIB) (Mike Frysinger)
- Fix numactl for noncontiguous nodes (Amit Arora)
- Fix bitmask memory leaks, numa_alloc_onnode/numa_preferred (Kornilios Kourtis)
- Add numa_node_of_cpu() to retrieve local node of a cpu (Kornilios Kourtis)
- Fix parsing of /proc/self/status (Brice Goglin/Lee Shermerhorn)
- Small reorganization of numa_alloc_local() (L.S.)
- Fixes of bitmask memory leaks in about eight functions (L.S.)
- Make library always return allocated masks that user can free (L.S.)
- Fix to numademo memtest (allocation overhead) (L.S.)
- Fix to checkaffinity test (possible shell errors) (L.S.)
- Fix a printf in migspeed.c (Frederik Himpe)
- Fix test/regress grep of node number (Cliff W.)
- Change numademo to finish in a timely manner on large machines (Cliff W.)
- tested on 96p 48nodes

2.0.3-rc1 - rc4
- Add --dump-nodes option to numactl (Andi)

2.0.3 released in June, 2009

2.0.4-rc3
- Fix numactl for a machine with sparse cpu ids (Anton Blanchard)
- Fix makefile to remove move_pages on make clean (Andi)
- Fix numa_node_to_cpus() (Sharyathi Nagesh)
- Rename 'thread' to 'task' (L.S.)
- Remove other trailing spaces (Cliff W.)
- Man page correction/clarification for numa_node_to_cpus() (Ian Wienand)
- Man page clarification for numactl (Mike MacCana)
- Fix numactl --hardware for cpu-less nodes (Thomas Renninger)
- Fix set_configured_cpus() (Jan Beulich)
- Fix memory corrupting use of strlen (Jan Beulich)
- Add a DSO destructor for memory deallocation (Neil Horman)

2.0.4 released in July, 2010

2.0.5 released in July, 2010 (about 2 days after 2.0.4)
- Fix numactl calls to set_mempolicy, get_mempolicy and mbind

newer:
- include stat.h in shm.c (Mike Frysinger)

2.0.6-rc1
- Correct numa_max_node() use of broken numa_num_configured_nodes() (Tim Pepper)
- Use numa_max_node() not numa_num_configured_nodes() (Tim Pepper)
- Fix numa_num_configured_nodes() to match man page description (Tim Pepper)
- Clarify comment for numa_all_nodes_ptr extern (Tim Pepper)
- numactl --hardware should handle sparse node numbering (Tim Pepper)
- Maintain compatibility with 2.0.3 numa_num_thread...()'s (Cliff W.)
2.0.6-rc2
- numa_num_task_cpus()/..nodes() to return actual counts (Cliff W.)
2.0.6-rc3
- Fix numa_get_run_node_mask() to return a cpuset-aware node mask (Cliff W.)
  (replaced 110112)
- Add a better warning to numa_node_to_cpus()
2.0.6-rc4
- Fix numa_get_mems_allowed() to use MPOL_F_MEMS_ALLOWED (Michael Spiegel)

2.0.6 released Dec, 2010

2.0.7-rc1
- 110111 Add numa_realloc() (and realloc_test) (Vasileios Karakasis)
- 110112 Re-fix numa_get_run_node_mask() and fix numa_get_run_node_mask (Cliff)
- 110112 Fix the numa_get_run_node_mask() man page (cpus vs nodes) (Cliff W.)
2.0.7-rc2
- 110112 Fix the cpu and node parsing to be cpuset aware (Cliff W.)
- 110112 Fix test/checkaffinity to be cpuset aware (Cliff W.)
- 110302 Fix two typos in numactl.8 (John Bradshaw)

2.0.7 released Apr, 2011

2.0.8-rc1
- 110818 Checking of sucessful allocations in numademo (Petr Holasek)
2.0.8-rc2
- 110823 Fix of numactl (--touch) warnings and man page (Cliff W.)
2.0.8-rc3
- 111214 Add "same" nodemask alias to numactl (Andi Kleen)
- 111214 Add constructors for numa_init/exit (Andi Kleen)
- 111214 Add use of glibc syscall stub where possible (Andi Kleen)
- 111214 Fix regress1 to show all the problems before exiting (Andi Kleen)
- 111214 Add IO affinity support (Andi Kleen)
- 111214 Clean regression test temp files (Andi Kleen)
- 111214 Add an option to memhog to disable transparent huge pages (Andi Kleen)
- 111214 Fix the test suite on systems that force THP, disable them (Andi Kleen)
2.0.8-rc4
- 120106 Install man pages migspeed, migratepages and numastat (Petr Holasek)
- 120106 Warnings in numa_node_to_cpus_v1 to be more verbose (Petr Holasek)
- 120216 Fix for numademo: msize check for ptrchase test (Petr Holasek)
2.0.8-rc5
- 120823 Fix calculation of maxconfiguredcpu (Petr Holasek)
- 120823 Fix: do not recalculate maxconfiguredcpu (Petr Holasek)
- 120823 v.1.3 numa_num_possible_cpus symbol is exported (Petr Holasek)
- 120823 Add all versions of numa_parse_{cpu,node}string() (Petr Holasek)
- 120823 Add numa_parse_cpustring take a const char* parameter (Petr Holasek)
- 120823 Fix unused bufferlen variable (Petr Holasek)
- 120823 Fix warnings when there are holes in numbering of nodes (Petr Holasek)
2.0.8-rc6
- 120911 Show distances on machines without a node 0 (Petr Holasek)
- 121007 Replace perl numastat with a C command (Bill Gray)
- 121011 Allow an install location PREFIX in the Makefile (Frank Tampe)

2.0.8 released Oct, 2012

2.0.9-rc1
- 130207 Add a prototype for numa_bitmask_weight (Cliff W.)
2.0.9-rc2
- 130725 Fix numastat huge pages bug, version number, man page (Bill Gray)
- 130726 Disable the regress-io test (Cliff W.)
- 130730 Fix typos in numactl man page; add short opts to --help (Petr Holasek)
2.0.9-rc3
- 130906 numactl: option --all/-a added for policy settings (Petr Holasek)
- 130906 libnuma: new function numa_run_on_node_mask_all (Petr Holasek)

2.0.9 released Oct, 2013

2.0.10-rc1
- 131123 numactl: numactl check for NUMA available (Elena Ufimtseva)
- 140715 numactl: fix numactl --show  and preferrred node (Bill Gray)
2.0.10-rc2
- 140722 makefile: remove warning about missing .depend (Filipe Brandenburger)
- 140820 convert the build procedure to automake (Filipe Brandenburger)

2.0.10 released Oct, 2014

