[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 hubstats 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
