From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 0a1daa39 for ; Thu, 3 Oct 2019 23:19:53 +0000 (UTC) Received: (qmail 26815 invoked by alias); 3 Oct 2019 23:19:43 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: List-Unsubscribe: X-Seq: 24320 Received: (qmail 2121 invoked by uid 1010); 3 Oct 2019 23:19:43 -0000 X-Qmail-Scanner-Diagnostics: from mail-vk1-f176.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.101.2/25587. spamassassin: 3.4.2. Clear:RC:0(209.85.221.176):SA:0(-2.0/5.0):. Processed in 1.734887 secs); 03 Oct 2019 23:19:43 -0000 X-Envelope-From: sgniazdowski@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _netblocks.google.com designates 209.85.221.176 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=aJs20Wpg02kg1pDPQganR1Ri7Ar4y2ONqjH962AfNYs=; b=jOPT019ic41H6BAt3dxmkzA9ERf7waE1PJ9k6YpIR3KFnTHYt87ICMhjyMOdw9Qt6C 5y7/WeEdBgyFRZOPg2T/399NNk3CipyNOjZOZ8qaLgcv+l2W0DAibJcLDKUj9h6nKh51 7B1AKdBH7OtCtLB3yScEpTDdFkDokVpgM6fsi2+6hDBSvf529GtUm5DFqBBQYSBL/bdb MP7VmQwM8ae7ci500kFHjgVKUW7di+7QT90ckA7lMkDoCEJoB+JMnqY+CKQxSjqNHeNi +CJrsW4Elr0zlAwfraF0cfQ2KwlrZ0j+Is++YfhbFvPuLaJPXAJByVSiBW2KFHugR4Q8 YKsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=aJs20Wpg02kg1pDPQganR1Ri7Ar4y2ONqjH962AfNYs=; b=mo0DPrmSD1tUv4U7r6IQG39rqLrOlSD1kDBgR05BUculqS1CuSRDwu+swGw3qV5TUO 8gvnGADr62YR+XejdZqrVgheJNopQRt3nFelfjRaCc/ysTxVvntSoBG8T6rrZlmWomDZ /rVx6ZRLfBjDZGV4XK2ama0iZy0YbsJD+OZXnY0TyY7a8nVhZ9TIptSaQO/ZSaQQcCyc DVdyVxqSfmHzTr8SEcRKWXoo9op75OWwggmQw78dW+JOCFSG96GrBkcsUyxQ6j+ZiSe1 o0CtkVi8S+UJfCzqORdAmZmU2HrjsOP8vmlxBSad5S7VD4fMAaIDupBxXY04WWqbR4AO +mdw== X-Gm-Message-State: APjAAAVRF0u8HwwJsVTThCKQ6G3uz46srpRewFXoHan7wrUE/JXTeDaC 5VocPqBbOMfDgRZhtRkIj+Y9Z38TKxWFiKPf/OeQaV75 X-Google-Smtp-Source: APXvYqzD2b5LLWDK7NwzDwE6fc7khl55OgTpDDKCHo8F+QIS11pPHr1hK8+kECMFkFt2shR561OqmnaQs40SehjcTt4= X-Received: by 2002:a1f:add1:: with SMTP id w200mr6351516vke.77.1570144747578; Thu, 03 Oct 2019 16:19:07 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Sebastian Gniazdowski Date: Thu, 3 Oct 2019 23:18:56 +0000 Message-ID: Subject: Re: A method to not leak unneeded functions To: Zsh Users Content-Type: text/plain; charset="UTF-8" i've noticed one thing: the need of "--" passed to unset, to be able to unset dash-starting functions. The snippet is thus: local -a ef ef=( ${(k)functions} ) trap "unset -f -- \"\${(k)functions[@]:#(${(j:|:)${(q@)ef}})}\" &>/dev/null" EXIT trap "unset -f -- \"\${(k)functions[@]:#(${(j:|:)${(q@)ef}})}\" &>/dev/null; return 1" INT unset ef That said, I've also noticed that the method is somewhat slow. For 2700 functions, the trap takes 0.39 seconds. If it could use the $ef parameter, then it could do $${(k)functions:|ef} which I measured to take only 1 ms. However, at the time of the EXIT trap, the local parameters are being unset. Is there any way to speed this up? -- Sebastian Gniazdowski News: https://twitter.com/ZdharmaI IRC: https://kiwiirc.com/client/chat.freenode.net:+6697/#zplugin Blog: http://zdharma.org