Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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 Program-
       ming 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
       behaves 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
       persistent memory allocator (pma) provided by Terence Kelly.   An  ear-
       lier  proof-of-concept  prototype  of  persistent gawk was developed by
       Haris Volos, 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 per-
       sistent memory allocator. Do not	use a backing file on such a  filesys-
       tem 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 persis-
       tence (as opposed to other non-persistence-related  gawk	 bugs)	please
       also  send  e-mail  to Terence Kelly at one or more of these addresses:
       tpkelly@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 (C) 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
       permission notice identical to this one.

       Permission is granted to	copy and distribute translations of this  man-
       ual page	into another language, under the above conditions for modified
       versions,  except that this permission notice may be stated in a	trans-
       lation approved by the Foundation.

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

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=pm-gawk&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help