dwww Home | Manual pages | Find package

PM-GAWK(1)                      Utility Commands                     PM-GAWK(1)

NAME
       persistent memory gawk - persistent data and functions

SYNOPSIS
       truncate -s size heap.pma
       export GAWK_PERSIST_FILE=heap.pma
       gawk ...

       truncate -s size heap.pma
       GAWK_PERSIST_FILE=heap.pma gawk ...

       truncate -s size heap.pma
       alias pm='GAWK_PERSIST_FILE=heap.pma'
       pm gawk ...                       # succinct

       unset GAWK_PERSIST_FILE   # disable persistence

       export GAWK_PERSIST_FILE=other_heap.pma  # change heap

       rm heap.pma               # delete heap

DESCRIPTION
       Gawk  5.2  and later supports a persistent memory feature that can store
       script-defined variables and functions in a file  for  later  use.   The
       feature, called pm-gawk, is described in GAWK: Effective AWK Programming
       and in Persistent Memory gawk User Manual.

       pm-gawk  is  activated by passing to gawk the name of an initially empty
       (all-zero-bytes) heap  file,  via  the  environment  variable  GAWK_PER-
       SIST_FILE.   pm-gawk  retains  script-defined variables and functions in
       the heap file for use in subsequent gawk invocations.

       pm-gawk offers at least two advantages compared with the existing  rwar-
       ray  extension:  it offers constant-time (``O(1) time'') access to indi-
       vidual elements of persistent  associative  arrays,  and  it  can  store
       script-defined functions in addition to variables.

EXAMPLES
       Demonstrate persistent variables:
              $ truncate -s 1G heap.pma            # create heap file
              $ export GAWK_PERSIST_FILE=heap.pma  # "ambient" env var
              $ gawk 'BEGIN { print ++i }'
              1
              $ gawk 'BEGIN { print ++i }'
              2
              $ gawk 'BEGIN { print ++i }'
              3

       To pass the environment variable on per-command basis:
              $ unset GAWK_PERSIST_FILE
              $ GAWK_PERSIST_FILE=heap.pma gawk 'BEGIN { print ++i }'
              4
              $ GAWK_PERSIST_FILE=heap.pma gawk 'BEGIN { print ++i }'
              5
              $ GAWK_PERSIST_FILE=heap.pma gawk 'BEGIN { print ++i }'
              6

       To reduce visual clutter of per-command environment variable passing:
              $ alias pm='GAWK_PERSIST_FILE=heap.pma'
              $ pm gawk 'BEGIN { print ++i }'
              7
              $ pm gawk 'BEGIN { print ++i }'
              8

       To refrain from activating persistence:
              $ unset GAWK_PERSIST_FILE
              $ gawk 'BEGIN { print ++i }'
              1
              $ gawk 'BEGIN { print ++i }'
              1

       To permanently ``forget'' the contents of the heap file:
              $ rm heap.pma

ENVIRONMENT VARIABLES
       GAWK_PERSIST_FILE  contains the name of a heap file where script-defined
       variables and functions are stored.  If this environment variable is not
       visible to gawk, the persistence feature is not activated and  gawk  be-
       haves in its traditional manner.

VERSION INFORMATION
       Persistent memory gawk was first released in gawk 5.2.

AUTHORS
       Arnold Robbins, the maintainer of gawk, implemented pm-gawk using a per-
       sistent  memory  allocator  (pma) provided by Terence Kelly.  An earlier
       proof-of-concept prototype of persistent gawk was developed by Haris Vo-
       los, Zi Fan Tan, and Jianan  Li  using  a  fork  of  the  official  gawk
       sources.

CAVEATS
       The GNU/Linux CIFS filesystem is known to cause problems for the persis-
       tent  memory  allocator.  Do not use a backing file on such a filesystem
       with pm-gawk.

BUG REPORTS
       Follow the procedures in GAWK: Effective AWK Programming and in  Persis-
       tent Memory gawk User Manual.  For suspected bugs related to persistence
       (as opposed to other non-persistence-related gawk bugs) please also send
       e-mail  to  Terence  Kelly  at  one  or  more  of  these  addresses: tp-
       kelly@acm.org, tpkelly@eecs.umich.edu, or tpkelly@cs.princeton.edu.

SEE ALSO
       gawk(1), GAWK: Effective AWK Programming,  and  Persistent  Memory  gawk
       User  Manual.  The two manuals should be available in the Info subsystem
       if Info installed on your system.

       See https://web.eecs.umich.edu/~tpkelly/pma/ for the latest source  code
       and manual.

COPYING PERMISSIONS
       Copyright © 2022 Terence Kelly.

       Permission  is  granted  to  make and distribute verbatim copies of this
       manual page provided the copyright notice and this permission notice are
       preserved on all copies.

       Permission is granted to copy and distribute modified versions  of  this
       manual page under the conditions for verbatim copying, provided that the
       entire  resulting  derived work is distributed under the terms of a per-
       mission notice identical to this one.

       Permission is granted to copy and distribute translations of this manual
       page into another language, under the above conditions for modified ver-
       sions, except that this permission notice may be stated in a translation
       approved by the Foundation.

Free Software Foundation          Nov 17 2022                        PM-GAWK(1)

Generated by dwww version 1.16 on Tue Dec 16 06:54:05 CET 2025.