<feed xmlns='http://www.w3.org/2005/Atom'>
<title>guix.git/guix/memoization.scm, branch master</title>
<subtitle>Personal branch of https://git.savannah.gnu.org/cgit/guix.git/ for implementing 'guix deploy'.
</subtitle>
<id>https://www.git.jakob.space/guix.git/atom?h=master</id>
<link rel='self' href='https://www.git.jakob.space/guix.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/'/>
<updated>2017-12-13T22:11:53Z</updated>
<entry>
<title>memoization: Add 'invalidate-memoization!.</title>
<updated>2017-12-13T22:11:53Z</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2017-12-13T13:59:48Z</published>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/commit/?id=d1f01e48457f8cac9e64fb9f890332d5d93f430e'/>
<id>urn:sha1:d1f01e48457f8cac9e64fb9f890332d5d93f430e</id>
<content type='text'>
* guix/memoization.scm (%make-hash-table*): When not profiling, add the
new table to %MEMOIZATION-TABLES.
(invalidate-memoization!): New procedure.
</content>
</entry>
<entry>
<title>memoization: Profiling support keeps track of lookups and hits.</title>
<updated>2017-12-12T17:11:22Z</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludovic.courtes@inria.fr</email>
</author>
<published>2017-12-12T13:52:17Z</published>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/commit/?id=6c80641d54a95f2da95e480a4a746761d25161e9'/>
<id>urn:sha1:6c80641d54a95f2da95e480a4a746761d25161e9</id>
<content type='text'>
* guix/memoization.scm (&lt;cache&gt;): New record type.
(define-lookup-procedure, define-update-procedure): New macros.
(cache-ref, cacheq-ref, cache-set!, cacheq-set!): New procedures.
(cached/mv, cachedq/mv, cached, cachedq): Use them instead of 'hash-ref'
and 'hash-set!'.
(%make-hash-table*): When 'profiled?' returns true, return a &lt;cache&gt;
object.
(define-cache-procedure): Adjust to show cache lookups and hits.
</content>
</entry>
<entry>
<title>memoization: Add profiling support.</title>
<updated>2017-12-12T17:11:22Z</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2017-12-11T20:43:54Z</published>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/commit/?id=252c4083779a488c86e74362b4f3bb4bf927cc67'/>
<id>urn:sha1:252c4083779a488c86e74362b4f3bb4bf927cc67</id>
<content type='text'>
* guix/memoization.scm (%memoization-tables): New variable.
(%make-hash-table*, show-memoization-tables): New procedures.
(make-hash-table*): New macro.
Add top-level call to 'register-profiling-hook!'.
(memoize): Adjust to pass the resulting procedure to
'make-hash-table*'.
(%mlambda): Likewise.
</content>
</entry>
<entry>
<title>memoization: (mlambda () ...) allows for inner 'define'.</title>
<updated>2017-09-03T21:36:17Z</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2017-09-03T21:29:11Z</published>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/commit/?id=e3c83a7cd3618a87d74e58973dcd82e560e2da97'/>
<id>urn:sha1:e3c83a7cd3618a87d74e58973dcd82e560e2da97</id>
<content type='text'>
Previously (mlambda () (define foo 2) bar) would trigger a syntax error.

* guix/memoization.scm (%mlambda): In the zero-argument case, move
BODY... to a lambda to allow for inner 'define' and such.
</content>
</entry>
<entry>
<title>memoization: Micro-optimize code produced by 'define-cache-procedure'.</title>
<updated>2017-03-16T21:50:15Z</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2017-03-16T12:41:51Z</published>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/commit/?id=146db52a188b871769d9512867aa7f409f37dbac'/>
<id>urn:sha1:146db52a188b871769d9512867aa7f409f37dbac</id>
<content type='text'>
* guix/memoization.scm (%nothing): Remove.
(define-cache-procedure): Make '%nothing' a local variable, with a
literal list.
</content>
</entry>
<entry>
<title>Add (guix memoization).</title>
<updated>2017-01-28T17:55:20Z</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2017-01-28T15:33:57Z</published>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/commit/?id=f9704f179a5160013c4a401dce3761714bba8e72'/>
<id>urn:sha1:f9704f179a5160013c4a401dce3761714bba8e72</id>
<content type='text'>
* guix/combinators.scm (memoize): Remove.
* guix/memoization.scm: New file.
* Makefile.am (MODULES): Add it.
* gnu/packages.scm, gnu/packages/bootstrap.scm,
guix/build-system/gnu.scm, guix/build-system/python.scm,
guix/derivations.scm, guix/gnu-maintenance.scm,
guix/import/cran.scm, guix/import/elpa.scm,
guix/modules.scm, guix/scripts/build.scm,
guix/scripts/graph.scm, guix/scripts/lint.scm,
guix/store.scm, guix/utils.scm: Adjust imports accordingly.
</content>
</entry>
</feed>
