From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id oO0iCabb6GO/oAAAbAwnHQ (envelope-from ) for ; Sun, 12 Feb 2023 13:29:26 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id uEFECKbb6GOlDwAAG6o9tA (envelope-from ) for ; Sun, 12 Feb 2023 13:29:26 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id AACCA42D68 for ; Sun, 12 Feb 2023 13:29:25 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pRBTc-00060u-18; Sun, 12 Feb 2023 07:29:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pRBTa-00060h-M3 for guix-patches@gnu.org; Sun, 12 Feb 2023 07:29:02 -0500 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pRBTa-0007da-Cw for guix-patches@gnu.org; Sun, 12 Feb 2023 07:29:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pRBTa-0000Ac-6x for guix-patches@gnu.org; Sun, 12 Feb 2023 07:29:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#49946] [PATCH v7 01/32] gnu: tree-sitter: Move to its own module. Resent-From: Pierre Langlois Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 12 Feb 2023 12:29:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 49946 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Andrew Tropin Cc: "\(" , Pierre Langlois , 49946@debbugs.gnu.org, Luis Henrique Gomes Higino , zimoun Received: via spool by 49946-submit@debbugs.gnu.org id=B49946.1676204887583 (code B ref 49946); Sun, 12 Feb 2023 12:29:02 +0000 Received: (at 49946) by debbugs.gnu.org; 12 Feb 2023 12:28:07 +0000 Received: from localhost ([127.0.0.1]:44280 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pRBSg-00009J-NX for submit@debbugs.gnu.org; Sun, 12 Feb 2023 07:28:07 -0500 Received: from mout.gmx.net ([212.227.17.21]:42841) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pRBSd-00008o-Kf for 49946@debbugs.gnu.org; Sun, 12 Feb 2023 07:28:05 -0500 Received: from labiere ([82.69.64.142]) by mail.gmx.net (mrgmx105 [212.227.17.174]) with ESMTPSA (Nemesis) id 1MF3HU-1pKapQ0rcm-00FSJS; Sun, 12 Feb 2023 13:27:56 +0100 References: <87mtfi63ut.fsf@gmx.com> <20221125012142.22579-1-pierre.langlois@gmx.com> <20221125012142.22579-2-pierre.langlois@gmx.com> <87bkovcp1d.fsf@gmx.com> <87h6vvgnd6.fsf@trop.in> <86pmaj3td2.fsf@gmail.com> <87cz6jgcku.fsf@trop.in> <87a61lr8cp.fsf@trop.in> <87o7q1qzol.fsf@gmx.com> <87v8k9o3iz.fsf@gmx.com> <87k00nfmfp.fsf@trop.in> User-agent: mu4e 1.8.13; emacs 28.2 From: Pierre Langlois Date: Sun, 12 Feb 2023 12:24:33 +0000 In-reply-to: <87k00nfmfp.fsf@trop.in> Message-ID: <87r0uvkr06.fsf@gmx.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Provags-ID: V03:K1:HtMH5cDPER3o9U8m/dVKXrYIj+1ZjR0H6ysx/JRn1/DQRYEe95n n6vLzNL2v0aa7/7Vqn3hT988Z6Zp4SvJiw5haUqj2mrQNF9lG95vBfRHVUEvHTso3KKVW8n ArdO2hxiKlqn6WsLgN4wHhdtUb6aRwIEbW18ageXpiMgqeIuJh2m+vKFdPXS/lJRe/NX4Gp jJbnzKEzhNyiltWfsvp/g== UI-OutboundReport: notjunk:1;M01:P0:Loy5wRglIBk=;yn2LsiSSEDmjvinjZRwnO0cAX7N tc1fZBEMHuuXnWSfbAavueeXUCAbW7ksrXnQVLk8ezwR8pPu9CV2ZcpwMCK0BNZ5KjJuFwhR0 WU+60vHB/qUQvwYEFwVDlb1fL7Ux2jG3jtEjGx9wtC0QeGXQf/l/E4iZ0eg/ppTBqnYDLfuwM eQySKgyqFijbYF0JHFsn5ZMlIDaVwS5dKJpAJA4fLS3WIl8D201g+NpzH64EmM0tF6i2aU2Gt YHSZ2g69OO+d6KKFVVno4nyeuaTHWQTT5uazsCdXnBMIsYrIHxx0Nba35XdWFeWvfHrL+CwHF Xj27ORlTRSymYk7CEdh98WKsBKze/kIpE32zx0gTtwjQ3DXAepeOfFQQIMMJI2b7Je8PjVPeb O+OoIZua+UyLK2HUH+llSG2MzTSVGEs8So910IlzAODRA+HDewXDXznP5d6ilklRF6EDteMLA WkwtW8KRbCEHTz+5F9auKK+nLbM5BBbGS6bl+c0gCxIPD93HognzOlVQ28qQ0rcbpzvevApw8 VTAFMNbWKDR1RcGBmLsbDBp5A066Gdqz2E1/YPTcnyR0P94d/kL/9KW/6cc5kYejP+gOdefsM AKAxwHriJKJe9FKqmo5f/1+aa8c8hpu8w/Qb02FzfmxZr4XNLRTsgKbH+EufvISrt5rRN2swK 6Xo8es8Sir0MgGDf+xmnFbCiLA0Lq8/VnD4WFPfv4FgO1cBEIMK116qec/Y/WCDfopLEqgXMv 6fjzzwrNOioWQsAmjNg5OYDlXYIsjqlhCC/52vosOd66tr/68UAe2ajqh+Omhvo76xfBObZgl j1KCxVkrmc0b9THYQF3xm2I2+/d+okM+qsdT8biu8l7GztYBdWXpnTYY7ZLLRTCbUglTwEAb7 ihx7ELzRVXFFUYCE0tiiecQgl2XtknyNQjTntiqBUHpbdIMIYeKcY/Oh1mUNH6CNdjzDPuI2z LcyF4mOCMj9waok6e4VXoUfLodE= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: guix-patches-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org"; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=gmx.com (policy=none) ARC-Seal: i=1; s=key1; d=yhetil.org; t=1676204965; a=rsa-sha256; cv=none; b=sqAbBPpAgGfLrbPnjvteTPchVFRoiEc4C7dOslJ7R98uxTFwmbBFiU4L1NMgCTDnoSXgvR Erm6HM5pBPuVoxr6qEcfilh5nVCf91TIOvMZgmjHydmzd6Qi5CathwAhQIV+ni6+H0PoQr 9IsDhFXy0heBqQFPMu612bbNEd83t66LHfXkpvoeUjX+eQMsu28+6E/Fnhmi6b34fFdt+l ggu5tKd9EVQiurjMDoX8j/ypbnLqeCt1k7XQ4wy+aJ3xMvps2PUQ6JyWwWTeYwMSv4WOdk SzIbFJ2df75RKg6ja3MBQkJI33W6u9jbRVVkCRhhUV1b1d5PMe4/pHQ2woSTqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1676204965; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post; bh=Avqdso+MduuXCGt6amwbbMykkZ4uevkSzuJHptg+8uc=; b=EQTaVdVVdHfQfNkNEMVYvHp/ewlymoYTqaaSu0oKRP7GihThusb9at+KRvK6rSN66RQik7 4B0yINzoF6uTebD2VZgJyTnQ9SbEKEuuuj33uoG7UHGxgcOt5lCr7p66IiEyQF1tYEu3j2 /ahHLiXj7fhcFntimTQZSNkWMUMRuyvJvJAA7jgUCIENDCPHbZJcIE6dCu3RV13HavZqsz oIQ7F/vlkXpyM7aJdNSAQ1l1Ycu5JH4o26FMS706VfZjf7SG6tJb0e+HzA/rrwI6BNtRKK f1SyPmWUXANJVbBZZaypBcCP5tIUCns1VFwEXQwNRYfvVEex99yaEmr8pwSt9g== X-Migadu-Scanner: scn1.migadu.com X-Migadu-Spam-Score: -3.72 X-Spam-Score: -3.72 X-Migadu-Queue-Id: AACCA42D68 Authentication-Results: aspmx1.migadu.com; dkim=none; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org"; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=gmx.com (policy=none) X-TUID: x69Nm7YzUbSQ --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Andrew Tropin writes: > [[PGP Signed Part:Undecided]] > On 2023-02-10 17:02, Pierre Langlois wrote: > >> Pierre Langlois writes: >> >>> [[PGP Signed Part:Undecided]] >>> Hi Andrew, thanks for pushing this along! It's great to see things >>> getting merged. >>> >>> Andrew Tropin writes: >>> >>>> [[PGP Signed Part:Undecided]] >>>> On 2023-02-09 18:04, Andrew Tropin wrote: >>>> >>>>> On 2023-02-09 13:39, zimoun wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> On Thu, 09 Feb 2023 at 14:11, Andrew Tropin wrote: >>>>>> >>>>>>> I applied tree-sitter and tree-sitter-cli patches, >>>>>> >>>>>> Just to be sure to understand, you have only applied 02/32 and 05/32, >>>>>> right? >>>>>> >>>>>> >>>>>> [bug#49946] [PATCH v7 02/32] gnu: tree-sitter: Update to 0.20.7. >>>>>> id:20221125012142.22579-3-pierre.langlois@gmx.com >>>>>> http://issues.guix.gnu.org/msgid/20221125012142.22579-3-pierre.langl= ois@gmx.com >>>>>> >>>>>> [bug#49946] [PATCH v7 05/32] gnu: Add tree-sitter-cli. >>>>>> id:20221125012142.22579-6-pierre.langlois@gmx.com >>>>>> http://issues.guix.gnu.org/msgid/20221125012142.22579-6-pierre.langl= ois@gmx.com >>>>>> >>>>>> Leaving out all the others, right? >>>>> >>>>> Merged first 5 patches from 01 to 05, also added one more commit, whi= ch >>>>> addresses some things from reviews and one commit, which adds html >>>>> grammar. >>>>> >>>>> The html grammar is added for the testing purposes. It relies on >>>>> generated parser.c and scanner.c and we will need to repackage it usi= ng >>>>> grammar.js instead. I'm not sure if a separate build system is needed >>>>> for this, I guess we can just rewrite tree-sitter-grammar function, >>>>> which generates packages as in example with tree-sitter-grammar-html: >>>>> https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/tree-sit= ter.scm?h=3D53b00b91b73bd60412d5bd057e22e6d63194a7f7#n158 >>>>> >>>>> Anyway, I only skimmed tree-sitter-build-system source code, and plan= to >>>>> read it carefully, evaluate and either introduce new build system or >>>>> just move all needed parts to tree-sitter-grammar function. WDYT? >>>>> After we done with it we can package all other grammars. >>>> >>>> Ok, I realized that the proper build process for tree-sitter grammars = is >>>> a little harder than I expected, tree-sitter-build system make sense. = I >>>> reviewed it, made a small change: >>> >>> Ah great, I was going to comment to try and push for us to keep the >>> build system. I originally went with a template package and inheritance, >>> but Maxime suggested moving to a build-system which ended up making the >>> package definitions a *lot* nicer IMO (see previous discussion here >>> https://issues.guix.gnu.org/49946#144). It also allows us to deal with >>> grammars that depend on each other more nicely I think. >>> >>>> >>>> @@ -29,7 +29,7 @@ (define-module (guix build tree-sitter-build-system) >>>> ;; Commentary: >>>> ;; >>>> ;; Build procedures for tree-sitter grammar packages. This is the >>>> -;; builder-side code, which builds on top fo the node build-system. >>>> +;; builder-side code, which builds on top of the node build-system. >>>> ;; >>>> ;; Tree-sitter grammars are written in JavaScript and compiled to a n= ative >>>> ;; shared object. The `tree-sitter generate' command invokes `node' = in order >>>> @@ -114,7 +114,7 @@ (define (compile-language dir) >>>> "-fno-exceptions" >>>> "-O2" >>>> "-g" >>>> - "-o" ,(string-append lib "/" lang ".so") >>>> + "-o" ,(string-append lib "/libtree-sitter-" lang "= .so") >>>> ;; An additional `scanner.{c,cc}' file is sometimes >>>> ;; provided. >>>> ,@(cond >>>> >>>> >>>> rewrote html grammar to use this build system and made it work with >>>> built-in treesit package. Also, tried examples of c and cpp grammars >>>> from patches in this thread. >>>> >>>> If you ok with it, I'll push the build system to master and update the >>>> html grammar accordingly. >> >> Oh, I forgot to say, this change to the build system LGTM! I'm really >> happy to see it merged soon :-). The path change will probably break the >> emacs-28-based tree-sitter support, but that's OK, it's better for the >> build-system to be made to target emacs 29's builtin support. I'm sure I >> can work around for emacs 28. > > Actually, I think we can build grammars with both names, just providing > two .so files instead of one. If you won't find a better workaround we > can go this way. That's no problem, I was able to work-around it quite easily. The emacs-tree-sitter-langs package expects all the grammars supported to be in a single directory, so we have to bundle them. So we can quite easily create symlinks from the bundle with the expected names, something like: =2D-8<---------------cut here---------------start------------->8--- (define-public emacs-tree-sitter-langs-grammar-bundle (package (name "emacs-tree-sitter-langs-grammar-bundle") (source #f) (version (package-version tree-sitter)) (build-system trivial-build-system) (inputs ;; FIXME: Support for some languages is still left to package. (list tree-sitter-bash tree-sitter-c tree-sitter-c-sharp tree-sitter-cpp tree-sitter-css tree-sitter-elixir tree-sitter-elm tree-sitter-go tree-sitter-haskell tree-sitter-html tree-sitter-java tree-sitter-javascript tree-sitter-json tree-sitter-julia tree-sitter-lua tree-sitter-ocaml tree-sitter-php tree-sitter-python tree-sitter-r tree-sitter-rust tree-sitter-ruby tree-sitter-typescript)) (arguments (list #:builder (with-imported-modules '((guix build union) (guix build utils)) #~(begin (use-modules (ice-9 match) (srfi srfi-1) (guix build union) (guix build utils)) (mkdir-p #$output) (for-each (lambda (lib) (symlink lib (string-append #$output "/" (substring (basename lib) (string-length "libt= ree-sitter-"))))) (append-map (match-lambda ((name directory) (find-files directory "libtree-sitter-.*\\= .so$"))) '#$(package-inputs this-package))))))) (synopsis #f) (description #f) (home-page #f) (license #f))) =2D-8<---------------cut here---------------end--------------->8--- Giving us: =2D-8<---------------cut here---------------start------------->8--- /gnu/store/fr9h59wgn55ilfifvm5df7xzxfwh38pc-emacs-tree-sitter-langs-grammar= -bundle-0.20.7 =E2=94=9C=E2=94=80=E2=94=80 bash.so -> /gnu/store/9qzvcdlpryjl44klfq0i2liqf= 6lsp5jq-tree-sitter-bash-0.19.0/lib/tree-sitter/libtree-sitter-bash.so =E2=94=9C=E2=94=80=E2=94=80 cpp.so -> /gnu/store/my02kq2dr6h48nmrl2dnfnm5rg= gx837w-tree-sitter-cpp-0.20.0-1.5ead1e2/lib/tree-sitter/libtree-sitter-cpp.= so =E2=94=9C=E2=94=80=E2=94=80 c_sharp.so -> /gnu/store/mp8jvbhx5xlgj5bxa52zhm= k5x8i7md5h-tree-sitter-c-sharp-0.19.1/lib/tree-sitter/libtree-sitter-c_shar= p.so =E2=94=9C=E2=94=80=E2=94=80 c.so -> /gnu/store/y9ln76yx68q495vx8bnqdy87x7k8= ihy5-tree-sitter-c-0.20.2/lib/tree-sitter/libtree-sitter-c.so =E2=94=9C=E2=94=80=E2=94=80 css.so -> /gnu/store/fwji59sdwvqpqyb94m55qw1ak9= 2cmys9-tree-sitter-css-0.19.0/lib/tree-sitter/libtree-sitter-css.so =E2=94=9C=E2=94=80=E2=94=80 elixir.so -> /gnu/store/f6ismnxf7hlh1sq87zzarw5= 6avvrzsl9-tree-sitter-elixir-0.19.0-1.de20391/lib/tree-sitter/libtree-sitte= r-elixir.so =E2=94=9C=E2=94=80=E2=94=80 elm.so -> /gnu/store/56zjl2ljvba3z1j6zfmpfa8mq1= 9a3g3a-tree-sitter-elm-5.6.3/lib/tree-sitter/libtree-sitter-elm.so =E2=94=9C=E2=94=80=E2=94=80 go.so -> /gnu/store/qfy5sw6za96wkszbi21adxbxzgg= vjz3g-tree-sitter-go-0.19.1-1.05900fa/lib/tree-sitter/libtree-sitter-go.so =E2=94=9C=E2=94=80=E2=94=80 haskell.so -> /gnu/store/cq3chmqcb8g1nf5mzb6yhz= dd6x9gvg1v-tree-sitter-haskell-0.14.0-1.e30bdfd/lib/tree-sitter/libtree-sit= ter-haskell.so =E2=94=9C=E2=94=80=E2=94=80 html.so -> /gnu/store/5pqfyjrg3yyvxaxidk690ffls= 3yb7wbi-tree-sitter-html-0.19.0/lib/tree-sitter/libtree-sitter-html.so =E2=94=9C=E2=94=80=E2=94=80 javascript.so -> /gnu/store/28s09v3dfb1c9bdkq27= 91z9abxnih66p-tree-sitter-javascript-0.20.0/lib/tree-sitter/libtree-sitter-= javascript.so =E2=94=9C=E2=94=80=E2=94=80 java.so -> /gnu/store/i7jlqf5hbv0rhlkp4qlyc2d5n= dw69dx4-tree-sitter-java-0.20.1/lib/tree-sitter/libtree-sitter-java.so =E2=94=9C=E2=94=80=E2=94=80 json.so -> /gnu/store/5dv4r74p6gd9w2ncs6pjrhz5h= bw47262-tree-sitter-json-0.19.0/lib/tree-sitter/libtree-sitter-json.so =E2=94=9C=E2=94=80=E2=94=80 julia.so -> /gnu/store/5k37g1sdsllgh64p0w6ggabs= ni6jqlkr-tree-sitter-julia-0.19.0/lib/tree-sitter/libtree-sitter-julia.so =E2=94=9C=E2=94=80=E2=94=80 lua.so -> /gnu/store/nqzn4a6kgb2rx4y44pxdm4sqf3= pzcpz1-tree-sitter-lua-0.0.14/lib/tree-sitter/libtree-sitter-lua.so =E2=94=9C=E2=94=80=E2=94=80 ocaml_interface.so -> /gnu/store/3h7krcj3xxclir= b8afxh65ipabw1821l-tree-sitter-ocaml-0.19.0-1.0348562/lib/tree-sitter/libtr= ee-sitter-ocaml_interface.so =E2=94=9C=E2=94=80=E2=94=80 ocaml.so -> /gnu/store/3h7krcj3xxclirb8afxh65ip= abw1821l-tree-sitter-ocaml-0.19.0-1.0348562/lib/tree-sitter/libtree-sitter-= ocaml.so =E2=94=9C=E2=94=80=E2=94=80 php.so -> /gnu/store/ymxf5m8jhihbrag7v2pghgydj3= byp7wh-tree-sitter-php-0.19.0-1.435fa00/lib/tree-sitter/libtree-sitter-php.= so =E2=94=9C=E2=94=80=E2=94=80 python.so -> /gnu/store/ggmzicwfxb7gz1rr9lfkx8c= ak62bfw7v-tree-sitter-python-0.19.1-1.ed0fe62/lib/tree-sitter/libtree-sitte= r-python.so =E2=94=9C=E2=94=80=E2=94=80 r.so -> /gnu/store/y9dxbnbb5dyf0rq3kpar7ip4w3lq= 6sb9-tree-sitter-r-0.0.1-1.80efda5/lib/tree-sitter/libtree-sitter-r.so =E2=94=9C=E2=94=80=E2=94=80 ruby.so -> /gnu/store/ky8n30dw16ck6byaqnhbf9ib7= xp7j0yw-tree-sitter-ruby-0.20.0/lib/tree-sitter/libtree-sitter-ruby.so =E2=94=9C=E2=94=80=E2=94=80 rust.so -> /gnu/store/25zdpwrgq1xibhv7xpg64i4g7= 1xah6g1-tree-sitter-rust-0.20.1/lib/tree-sitter/libtree-sitter-rust.so =E2=94=9C=E2=94=80=E2=94=80 tsx.so -> /gnu/store/wqpcphz855yjrginwqrymd3xzz= xb8k8l-tree-sitter-typescript-0.20.1/lib/tree-sitter/libtree-sitter-tsx.so =E2=94=94=E2=94=80=E2=94=80 typescript.so -> /gnu/store/wqpcphz855yjrginwqr= ymd3xzzxb8k8l-tree-sitter-typescript-0.20.1/lib/tree-sitter/libtree-sitter-= typescript.so =2D-8<---------------cut here---------------end--------------->8--- --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQFMBAEBCgA2FiEEctU9gYy29KFyWDdMqPyeRH9PfVQFAmPo20kYHHBpZXJyZS5s YW5nbG9pc0BnbXguY29tAAoJEKj8nkR/T31UcoMIAI+yOPj9qsXR35dX5JAx+Ny1 I/xsUxUzjvFTuF5FDfMfmW8vhLxBIYjU+YS0SZ1lsXSevWkcX740Zlc/WkwsYBFF /6wvqyFLQexh6ZKTCHcwHaYiuJjJCvdUf28/erdXMdsTb/PKwC2/yuRC/6ZLNwba Qy7rhEZ0uAxUzst5RPR9mOQO64leNZx7Oftsc6fyjxkQ3LoHyn97yVvDS8MOSTux aoKaVvUZ6ka31BkHhzRzr47FpBxJSc3jBWkVepbhTVO4Noa07GnrWaMhdHTLa4nC vOD2EyGsicDVt/U4MGtAl+d6m5hgRWrj/RUDAADE9Kc4dfuNhfM05NNQxCPOWJQ= =aR2f -----END PGP SIGNATURE----- --=-=-=--