From owner-cvs-ports@FreeBSD.ORG Mon Jun 6 09:27:33 2011 Return-Path: Delivered-To: cvs-ports@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2531D106566C; Mon, 6 Jun 2011 09:27:33 +0000 (UTC) (envelope-from az@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 156138FC13; Mon, 6 Jun 2011 09:27:33 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.4/8.14.4) with ESMTP id p569RWSH028488; Mon, 6 Jun 2011 09:27:32 GMT (envelope-from az@repoman.freebsd.org) Received: (from az@localhost) by repoman.freebsd.org (8.14.4/8.14.4/Submit) id p569RWWl028487; Mon, 6 Jun 2011 09:27:32 GMT (envelope-from az) Message-Id: <201106060927.p569RWWl028487@repoman.freebsd.org> From: Andrej Zverev Date: Mon, 6 Jun 2011 09:27:32 +0000 (UTC) To: ports-committers@FreeBSD.org, cvs-ports@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: ports/devel Makefile ports/devel/p5-Eval-Closure Makefile distinfo pkg-descr pkg-plist X-BeenThere: cvs-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jun 2011 09:27:33 -0000 az 2011-06-06 09:27:32 UTC FreeBSD ports repository Modified files: devel Makefile Added files: devel/p5-Eval-Closure Makefile distinfo pkg-descr pkg-plist Log: String eval is often used for dynamic code generation. For instance, Moose uses it heavily, to generate inlined versions of accessors and constructors, which speeds code up at runtime by a significant amount. String eval is not without its issues however - it's difficult to control the scope it's used in (which determines which variables are in scope inside the eval), and it can be quite slow, especially if doing a large number of evals. This module attempts to solve both of those problems. It provides an eval_closure function, which evals a string in a clean environment, other than a fixed list of specified variables. It also caches the result of the eval, so that doing repeated evals of the same source, even with a different environment, will be much faster (but note that the description is part of the string to be evaled, so it must also be the same (or non-existent) if caching is to work properly). Revision Changes Path 1.4361 +1 -0 ports/devel/Makefile 1.1 +29 -0 ports/devel/p5-Eval-Closure/Makefile (new) 1.1 +2 -0 ports/devel/p5-Eval-Closure/distinfo (new) 1.1 +16 -0 ports/devel/p5-Eval-Closure/pkg-descr (new) 1.1 +5 -0 ports/devel/p5-Eval-Closure/pkg-plist (new)