Path: csiph.com!usenet.pasdenom.info!aioe.org!news.stack.nl!newsfeed.xs4all.nl!newsfeed3a.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.002 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'python.': 0.02; 'python,': 0.02; 'cpython': 0.05; 'linux,': 0.07; 'needed,': 0.07; 'cc:addr :python-list': 0.11; 'language,': 0.12; 'language.': 0.14; 'posted': 0.15; 'did,': 0.16; "object's": 0.16; 'reasonably': 0.16; 'roy': 0.16; 'said.': 0.16; 'scrub': 0.16; 'wrote:': 0.18; 'possible,': 0.19; 'feb': 0.22; 'memory': 0.22; 'cc:addr:python.org': 0.22; 'mon,': 0.24; 'cc:2**0': 0.24; 'right.': 0.26; 'header:In-Reply-To:1': 0.27; 'chris': 0.29; 'am,': 0.29; 'message-id:@mail.gmail.com': 0.30; "i'm": 0.30; '"do': 0.31; 'easy,': 0.31; 'os,': 0.31; 'subject:the': 0.34; 'but': 0.35; 'received:google.com': 0.35; 'there': 0.35; 'done': 0.36; 'possible': 0.36; 'pm,': 0.38; 'rather': 0.38; 'anything': 0.39; 'use.': 0.39; 'sure': 0.39; 'how': 0.40; "you're": 0.61; 'soon': 0.63; 'talking': 0.65; 'to:addr:gmail.com': 0.65; 'smith': 0.68; 'fact,': 0.69; 'truth': 0.81; 'domain,': 0.84 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=sQPvvCPLoS7aKlBzuRB5oyBn8K19XarcID3yLgeEG1k=; b=KqibgnVQIUE1fU+mnOf0u7hmndkiILROb+0/fSz5+x1qRdJw2aKfkzZi+crUNU26Eu xHlLmVR0heR5rbmVtm9phGP2W44tVChUkcZLc1K/NatUNs6JxjxUz2UJ8P8NlVUQzJ9H iECnlZ7nHRZTHcsWLxXjIBw4Hj6rqbRyp8WSB9zYR55HsBskY2/KPzdLCx86zNusVGuO bYuS4FyySmudKPJ27jok8zJZVai8KalbckVd0LpB17KVvHhQNdo0lJpl4hRLrrAJpuW0 1A6e/7PV6steGyOamtabVV/h3af3GSQQOPkw/X38ks1jGX1x1gdqfyA9TCy104TqDnGE tXKw== X-Received: by 10.224.162.200 with SMTP id w8mr13759936qax.1.1391390702010; Sun, 02 Feb 2014 17:25:02 -0800 (PST) MIME-Version: 1.0 In-Reply-To: References: <858utviwgs.fsf@benfinney.id.au> <52EC3C40.7080402@stoneleaf.us> <52ec84bc$0$29972$c3e8da3$5496439d@news.astraweb.com> From: Devin Jeanpierre Date: Sun, 2 Feb 2014 17:24:21 -0800 Subject: Re: __init__ is the initialiser To: Chris Angelico Content-Type: text/plain; charset=UTF-8 Cc: "python-list@python.org" X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 25 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1391390710 news.xs4all.nl 2964 [2001:888:2000:d::a6]:51103 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:65308 On Sun, Feb 2, 2014 at 4:07 PM, Chris Angelico wrote: > On Mon, Feb 3, 2014 at 10:40 AM, Roy Smith wrote: >> I'm reasonably sure you posted this as humor, but there is some truth in >> what you said. In the crypto/security domain, you often want to keep a >> key or cleartext around only for the time it's needed, and scrub the >> memory it was occupying as soon as it is no longer in use. >> >> I don't know how you would do that in Python. > > I did, but you're right. > > It's fundamentally not possible in pure Python, because there's no way > to flag a block of memory as "do not page this to disk". For what > you're talking about to be at all possible, you would need support > from the language, from the OS, mlock on linux, VirtualAlloc (?) on windows. This can be done in CPython after the fact, but you'd want the memory to be unpageable before it has contents put in it, not after. Destroying memory is comparatively easy, as you say -- just make the object's internal state "invalid", rather than adding anything to the language. -- Devin