From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Israelsson Tampe Newsgroups: gmane.lisp.guile.devel,gmane.lisp.guile.user Subject: Re: Python on guile v1.2.3.7 Date: Sun, 18 Apr 2021 00:12:38 +0200 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="0000000000009ddbd005c03265c2" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="24603"; mail-complaints-to="usenet@ciao.gmane.io" To: Mikael Djurfeldt , guile-devel , Guile User Original-X-From: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Sun Apr 18 00:13:36 2021 Return-path: Envelope-to: guile-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lXtC3-0006ID-Sx for guile-devel@m.gmane-mx.org; Sun, 18 Apr 2021 00:13:36 +0200 Original-Received: from localhost ([::1]:55604 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXtC2-0007zP-UI for guile-devel@m.gmane-mx.org; Sat, 17 Apr 2021 18:13:34 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:58298) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXtBT-0007zC-5M; Sat, 17 Apr 2021 18:13:00 -0400 Original-Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]:35699) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lXtBM-0007G1-1h; Sat, 17 Apr 2021 18:12:58 -0400 Original-Received: by mail-pg1-x535.google.com with SMTP id q10so21603332pgj.2; Sat, 17 Apr 2021 15:12:50 -0700 (PDT) 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=PKoxBv37778xz8e+N7/TjipZryXqirqiq7+9/0iYdf0=; b=HwC/mgIdbeiJA2LevQDNlYRUgDpnucBUJ/AQIiQD0CxjKreDCwJj6CC0yQ6Vw5YLKS K29aaAc7+KDv0Ms+Qspw08b0iyMF4fzsD7+nZCk249b/kdfMidASj7YW81/0KbtzTm6z yrC8/exU3INXNMjmcdooULbtr2r/yuqlL/Jq33D5fk2YesXjKa7VRuxy6Wf4EYgwz3AB V/sNAmwyeSVsTCR4+rMof4Ie9gY9hLSnGw+onylT/Q+bzgKXrZkHB102lvrEn6fCVWsw rZxx9dEuTxnRh5ZFDKlD1teM1CnM03KHKCR6dLQf0jrL3kp7irrYH93dfcVKTMFyXgcI RqMA== 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=PKoxBv37778xz8e+N7/TjipZryXqirqiq7+9/0iYdf0=; b=MUmu5b9SALuxUw55iAa5BYmmxruHt8VYxWpkOBxdyIV7uKHyBvccACC8lIGrRuO/A9 BO3OfJWzATMVhYY1yppIGG5hWbGq4eETKhnPQTqGGnet4wclLa7PjhhZLGTt0FsGx06K 9JaH70Hy0cT5Dqp10pPzuDUr9dVZ6wVflU3OV/5iXWPu0XLyfbQ66XnButXaG35lXLhU r6WtqLZ3mVRxi4hBuxxdGyoOgEIofzMGqj4A6i6t9ISW6GhiLM6S7bBpCoxmP9/njvz8 pV1xB4V2C3XyNcEAv00fh6Jawctq7dc2pXFn7kLbR3qSbja4/lvG1gugwxrHocz2Wete C/lw== X-Gm-Message-State: AOAM532dvsq1vR/Rsg6mY2VjbVze1kVuNEtrIuSos5nFrEe8oUV/rT0P oCgwdjYlCyfCQwdRP3VHVJH94ICqHT+qDFDi5q3WDj0V X-Google-Smtp-Source: ABdhPJzXtMpdz3yzctgq+b/4j3hIX5SREnplP+R3FQIdDq+CZ/YI5O9WyW+A9w1hklubVytvHGA+XhX18NKlWy1cNHU= X-Received: by 2002:a65:63ce:: with SMTP id n14mr4949326pgv.279.1618697569294; Sat, 17 Apr 2021 15:12:49 -0700 (PDT) In-Reply-To: Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=stefan.itampe@gmail.com; helo=mail-pg1-x535.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Original-Sender: "guile-devel" Xref: news.gmane.io gmane.lisp.guile.devel:20739 gmane.lisp.guile.user:17421 Archived-At: --0000000000009ddbd005c03265c2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable I have continued to debug python for guile 3.1 and I am now getting much less warnings and also I can run test cases and it looks good. Tip, To run unit tests one can do from the module directory in the dist python language/python/module/unittest/tests/test_case.py to see what's working and what's not working. I am also working on getting it to behave better and especially take advantage of guile's new reader to introduce python source code numbering instead of the generated scheme code's numbering. Note that in python on guile I only modified the reader so that it reads python code and spit's out scheme code. So I then use some macros to modify line and columns to the python code. This way I can take advantage of the python scheme interface as the design goal is to be able to write pythonistic constructs in scheme code via a big chunk of macrology. Thanks to wingos work on the reader and making sure that the syntax objects contains the source location info, much of the dangerous clucky stuff that was added to get some kind of line numbering is now removed for version 3.1 of guile, we still support 2.0,2.1,2.2,3.0 as well. But the older version is less tested. I will not release a new version of python immediately as I continue to work on making the new version more robust against the 3.1 target and will try to continue to reduce the test cases that fail. On Sat, Apr 17, 2021 at 2:30 PM Stefan Israelsson Tampe < stefan.itampe@gmail.com> wrote: > Om man har ett filnamn kan jag l=C3=A4gga in den i syntax-object och meta > information finns i filen som python antar > existerar. S=C3=A5 p=C3=A5 n=C3=A5got s=C3=A4tt beh=C3=B6ver jag det info= t. Man kan ha en fluid som > n=C3=A4r man kompilerar en fil, s=C3=A5 f=C3=A5r den nuvarande compilatio= ns identitet och > annars #f. Anv=C3=A4ndaren =C3=A4r ansvarig att kolla ifall fluiden =C3= =A4r #f och anv=C3=A4nde > n=C3=A5got default v=C3=A4rde, t.ex. n=C3=A4r man evaluerar python kod i = shell milj=C3=B6n. > > On Sat, Apr 17, 2021 at 1:40 PM Mikael Djurfeldt > wrote: > >> ...och vad h=C3=A4nder om man pipe:ar in kod i kompilatorn s=C3=A5 att i= ngen giltig >> fil finns? Hur g=C3=A5r det d=C3=A5? >> >> Den l=C3=B6r 17 apr. 2021 13:38Mikael Djurfeldt s= krev: >> >>> OK, det verkar ju vara en rimlig beg=C3=A4ran. >>> >>> Kan vi hitta ett giltigt "use case" d=C3=A4r detta =C3=A4r motiverat? J= ag =C3=A4r ute >>> efter att st=C3=A4rka argumentationen h=C3=A4r. >>> >>> Varf=C3=B6r beh=C3=B6ver pythonkompilatorn veta detta? >>> >>> Mvh >>> Mikael >>> >>> Den l=C3=B6r 17 apr. 2021 13:28Stefan Israelsson Tampe < >>> stefan.itampe@gmail.com> skrev: >>> >>>> Hmm, jag har fixat detta p=C3=A5 ett annat s=C3=A4tt nu. Du kan g=C3= =B6ra en update av >>>> guile-persist och python-on-guile f=C3=B6r att f=C3=A5 n=C3=A5got som = ska fungera b=C3=A4ttre >>>> med b=C3=A4ttre rad h=C3=A4nvisningar till python kod och f=C3=A5 varn= ingar. >>>> >>>> Nu =C3=B6ver till n=C3=A4sta grej. Om vi kompilerar en fil so vill jag= i min >>>> python compilator veta vilket filnamn vi compilerar. Hur f=C3=A5r jag = tag p=C3=A5 det >>>> standardm=C3=A4ssigt? >>>> >>>> mvh >>>> Stefan >>>> >>>> On Fri, Apr 16, 2021 at 11:57 PM Mikael Djurfeldt >>>> wrote: >>>> >>>>> Tyv=C3=A4rr =C3=A4r det nog s=C3=A5 med mig att jag =C3=A4nd=C3=A5 in= te f=C3=B6rst=C3=A5r varf=C3=B6r den h=C3=A4r >>>>> funktionaliteten beh=C3=B6vs. >>>>> >>>>> Rimligtvis borde varningar (och fel, f=C3=B6r den delen) vara undanta= gsfall >>>>> s=C3=A5 att den h=C3=A4r situationen som du beskriver---att det blir = en uppsj=C3=B6 av >>>>> varningar---aldrig borde intr=C3=A4ffa. >>>>> >>>>> Nu =C3=A4r det ist=C3=A4llet s=C3=A5 att vi har en mekanism som leder= till denna >>>>> uppsj=C3=B6 av varningar. Och fr=C3=A5gan, tycker jag, =C3=A4r om man= p=C3=A5 n=C3=A5got vis kan >>>>> fixa problemet redan p=C3=A5 den niv=C3=A5n snarare =C3=A4n att d=C3= =A4mpa varningarna---jag >>>>> menar se till att varningarna aldrig uppst=C3=A5r. >>>>> >>>>> Dessv=C3=A4rre f=C3=B6rst=C3=A5r jag fortfarande inte exakt hur de h= =C3=A4r varningarna >>>>> uppst=C3=A5r. Visst kunde jag dyka ned i koden, men det skulle nog ta= ganska >>>>> l=C3=A5ng tid s=C3=A5 jag ber fortfarande om hj=C3=A4lp att f=C3=B6rs= t=C3=A5. >>>>> >>>>> Kan du ge ett enkelt exempel med en enkel klass d=C3=A4r du konkret k= an >>>>> visa vilken bindning till vilket objekt som skapas och varf=C3=B6r de= t ger en >>>>> varning? >>>>> >>>>> Ledsen att jag =C3=A4r s=C3=A5 petig... >>>>> >>>>> On Fri, Apr 16, 2021 at 10:54 PM Stefan Israelsson Tampe < >>>>> stefan.itampe@gmail.com> wrote: >>>>> >>>>>> >>>>>> I huvudsak, n=C3=A4r jag skapar python classer s=C3=A5 sparas en bin= dning till >>>>>> en del object i classen i modulen >>>>>> programatiskt som t.ex. medlemsfunktionerna. Detta anv=C3=A4nds n=C3= =A4rman >>>>>> serialiserar classer och speciellt >>>>>> do de medlemmar, s=C3=A5 n=C3=A4r man kan g=C3=B6ra x=3D[A.fkn1,B.fk= n2], och g=C3=B6ra en >>>>>> deepcopy p=C3=A5 x, serialisera och deserialisera utan att g=C3=A5 i= n p=C3=A5 >>>>>> funktionerne i sig som e b=C3=B6kit och kan ta mycket kraft. Har en = ganska >>>>>> komplett serialiserings funktion i guile persist som anv=C3=A4nds av= guile >>>>>> python f=C3=B6r copy,deepcopy och pickle. D=C3=A4r kan man serialise= ra t.ex. >>>>>> Generatorer och iteratorer (om de inte anv=C3=A4nder o boxade variab= ler i >>>>>> stacken) vilket f=C3=B6r python kod e fallet d=C3=A5 set! anv=C3=A4n= ds f=C3=B6r att boxa alla >>>>>> variabler. (Detta kan man inte g=C3=B6ra i python :-)) en tycker det= e en farlig >>>>>> men mycket cool feature d=C3=A5 det vill till en massa C magi f=C3= =B6r att fixa till >>>>>> detta (guile-persist) men som sagt var tack vare att vi skapar en l= =C3=A4nk >>>>>> ifr=C3=A5n modul till medlemsvariabler s=C3=A5 minskas behovet av C-= kod ganska >>>>>> dramatiskt. >>>>>> >>>>>> De =C3=A4r ocks=C3=A5 praktiskt n=C3=A4r man l=C3=A4nkar in C-kod, v= a f=C3=B6r mig att min >>>>>> gamla version av guile wranade n=C3=A4r man anv=C3=A4nder dessa inl= =C3=A4nkade funktioner. >>>>>> S=C3=A5 det vore bra d=C3=A4r med att hindra varningar att uppst=C3= =A5. =C3=84nne senare >>>>>> versioner kunde man g=C3=B6ra (define f #f) innan f sattes ab c-kode= n och hindra >>>>>> varningar. Men nu verkar denna >>>>>> metod slutat fungera. S=C3=A5 i de fall n=C3=A4r man f=C3=A5r typ s= =C3=A5dana problem kan >>>>>> den f=C3=B6reslagna metodiken fungera bra. >>>>>> >>>>>> =C3=96ver till var with ... ska l=C3=A4nkas in. >>>>>> >>>>>> jag moddade compile-file (system base compile) f=C3=B6r att kn=C3=B6= till >>>>>> detta, funkat bra med detta men det kan finnas >>>>>> b=C3=A4ttre st=C3=A4llen att s=C3=A4tta in den, och n=C3=A4r jag tit= tade p=C3=A5 koden s=C3=A5 e >>>>>> nog det b=C3=A4sta st=C3=A4llet funktionen 'compile' i samma module. >>>>>> >>>>>> >>>>>> On Fri, Apr 16, 2021 at 9:22 PM Mikael Djurfeldt < >>>>>> mikael@djurfeldt.com> wrote: >>>>>> >>>>>>> S=C3=A5 det r=C3=B6r sig om top level bindings i moduler? >>>>>>> >>>>>>> Dum fr=C3=A5ga: Varf=C3=B6r =C3=A4r den inte bunden n=C3=A4r den an= v=C3=A4nds? >>>>>>> >>>>>>> =C3=84r det kompilatorn som =C3=A4r =C3=B6vernitisk och i sj=C3=A4l= va verket hinner >>>>>>> variabeln bli bunden dynamiskt innan den verkliga anv=C3=A4ndningen= ? >>>>>>> >>>>>>> Finns n=C3=A5gon s=C3=A4rskild anledning till att det blir mer s=C3= =A5dant n=C3=A4r man >>>>>>> kompilerar Python? >>>>>>> >>>>>>> Och, vet du var, mer precist, som anropet till >>>>>>> with-no-warnings-for-symbol ska placeras? >>>>>>> >>>>>>> Den fre 16 apr. 2021 11:02Stefan Israelsson Tampe < >>>>>>> stefan.itampe@gmail.com> skrev: >>>>>>> >>>>>>>> Vi tar den patch som =C3=A4r viktigast och enklast f=C3=B6rst, >>>>>>>> >>>>>>>> Vi beh=C3=B6ver ett system f=C3=B6r att kunna undertrycka varninga= r f=C3=B6r att >>>>>>>> en modules symbol inte =C3=A4r bunden n=C3=A4r den anv=C3=A4nds. A= tt skriva ut s=C3=A5dana >>>>>>>> varningar n=C3=A4r den =C3=A4r viktig =C3=A4r ett av guiles starka= sidor j=C3=A4mf=C3=B6rt med t.ex. >>>>>>>> python. Men med python kompilering s=C3=A5 f=C3=A5r vi ett ton av = symboler som >>>>>>>> varnas f=C3=B6r och vi f=C3=B6rlorar guldklimparna i allt skr=C3= =A4p som skrivs ut. Med >>>>>>>> min patch har jag f=C3=A5ngat otaliga buggar i python libbet fakti= skt som jag >>>>>>>> skulle >>>>>>>> ha missat om jag inte patchat warnings systemet eller anv=C3=A4nt = cpython >>>>>>>> >>>>>>>> F=C3=B6reslagen API: >>>>>>>> >>>>>>>> (define *no-warning-for-symbol-map* (make-fluid #f)) >>>>>>>> >>>>>>>> (define (no-warn-printout-for-symbol? symbol) >>>>>>>> (let ((symmap (fluid-ref *no-warning-for-symbol-map*))) >>>>>>>> (if symmap >>>>>>>> (hash-ref symmap symbol) >>>>>>>> #f))) >>>>>>>> >>>>>>>> (define (with-no-warnings-for-symbol thunk) >>>>>>>> (with-fluids ((*no-warning-for-symbol-map* (make-hash-table))) >>>>>>>> (thunk))) >>>>>>>> >>>>>>>> (define (add-no-warning-for-symbol symbol) >>>>>>>> (when (not (symbol? symbol)) >>>>>>>> (error "add-no-warning-for-symbol symbol takes a symbol as >>>>>>>> argument")) >>>>>>>> >>>>>>>> (let ((m (fluid-ref *no-warning-for-symbol-map*))) >>>>>>>> (if m >>>>>>>> (hash-set! m symbol #t) >>>>>>>> (error "adding symbol to inhibit warning outside of >>>>>>>> compilation")))) >>>>>>>> >>>>>>>> >>>>>>>> ;; API=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >>>>>>>> >>>>>>>> ;; 'add-no-warning-for-symbol' >>>>>>>> ;; ska vara synlig f=C3=B6r guile anv=C3=A4ndaren >>>>>>>> ;; Man kan h=C3=A4r under kompilering l=C3=A4gga till en symbol= som inte >>>>>>>> ska warnas >>>>>>>> ;; f=C3=B6r att den e odefinierad >>>>>>>> >>>>>>>> ;; 'no-warn-printout-for-symbol?' >>>>>>>> ;; varingsystemet ska kolla med denna om den ska skriva ut en >>>>>>>> varning f=C3=B6r >>>>>>>> ;; anv=C3=A4ndandet av en obunden variable >>>>>>>> >>>>>>>> ;; 'with-no-warnings-for-symbol' >>>>>>>> ;; scheme kompilerings systemet ska anv=C3=A4nda denna f=C3=B6r= att alla >>>>>>>> kompilerings >>>>>>>> ;; moduler ska f=C3=A5 en egen no-warn hashmap >>>>>>>> >>>>>>>> Mvh >>>>>>>> Stefan >>>>>>>> >>>>>>>> On Fri, Apr 16, 2021 at 10:16 AM Mikael Djurfeldt < >>>>>>>> mikael@djurfeldt.com> wrote: >>>>>>>> >>>>>>>>> Jag vet inte om du k=C3=A4nner till det, men jag har varit en av >>>>>>>>> Guile's maintainers och k=C3=A4nner =C3=A5tminstone Ludovic hyfsa= t v=C3=A4l. Jag har >>>>>>>>> dessutom skrivr=C3=A4ttigheter i repositoryt. D=C3=A4rf=C3=B6r bo= rde jag kunna hj=C3=A4lpa dig >>>>>>>>> att f=C3=A5 in saker. >>>>>>>>> >>>>>>>>> Ska vi kanske b=C3=B6rja med n=C3=A5got enkelt, dvs inte en hel b= unt patchar >>>>>>>>> utan *en* funktion som du beh=C3=B6ver? >>>>>>>>> >>>>>>>>> Du skulle tex kunna visa mig den och f=C3=B6rklara syftet f=C3=B6= r mig. >>>>>>>>> >>>>>>>>> Mvh >>>>>>>>> Mikael >>>>>>>>> >>>>>>>>> >>>>>>>>> On Fri, Apr 16, 2021 at 10:11 AM Stefan Israelsson Tampe < >>>>>>>>> stefan.itampe@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> Jag har f=C3=B6rs=C3=B6kt f=C3=A5 in den i guile flera ggr men f= =C3=A5r ingen >>>>>>>>>> repsons. Jag beh=C3=B6ver bra debuginformation f=C3=B6r att kunn= a komma fram=C3=A5t i >>>>>>>>>> fels=C3=B6kningen, vilket =C3=A4r anledningen att denna funktion= alitet finns d=C3=A4r. Jag >>>>>>>>>> kan st=C3=A4nga dessa moddar f=C3=B6r trunk om du vill. Radnumme= r i syntax objecten e >>>>>>>>>> ju perfekt. D=C3=A5 ska man modda dessa i st=C3=A4llet (och f=C3= =A5 b=C3=A4ttre funktion) och >>>>>>>>>> man slipper den moddningen. Jag ska ta ner trunk och studera det= ta. >>>>>>>>>> >>>>>>>>>> Stefan >>>>>>>>>> >>>>>>>>>> On Fri, Apr 16, 2021 at 10:00 AM Mikael Djurfeldt < >>>>>>>>>> mikael@djurfeldt.com> wrote: >>>>>>>>>> >>>>>>>>>>> Min =C3=A5sikt =C3=A4r att det du g=C3=B6r i detta avseende int= e =C3=A4r en effektiv >>>>>>>>>>> strategi. >>>>>>>>>>> >>>>>>>>>>> Obs att du, som utvecklare av ett alternativt spr=C3=A5k i Guil= e, har >>>>>>>>>>> giltiga sk=C3=A4l att f=C3=A5 den funktionalitet du beh=C3=B6ve= r tillgodosedd av Guile. >>>>>>>>>>> D=C3=A4rf=C3=B6r b=C3=B6r du beg=C3=A4ra att den kommer in i Gu= ile, och d=C3=A5 kommer den >>>>>>>>>>> funktionaliteten att underh=C3=A5llas d=C3=A4r. >>>>>>>>>>> >>>>>>>>>>> Att patcha Guile, samt att underh=C3=A5lla s=C3=A5dana patchar,= =C3=A4r d=C3=B6mt >>>>>>>>>>> att kontinuerligt skapa en massa on=C3=B6digt jobb. >>>>>>>>>>> >>>>>>>>>>> Mvh >>>>>>>>>>> Mikael >>>>>>>>>>> >>>>>>>>>>> On Fri, Apr 16, 2021 at 9:51 AM Stefan Israelsson Tampe < >>>>>>>>>>> stefan.itampe@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hmm, jag k=C3=B6r 3.0.4 sj=C3=A4lv. Jag moddar guile genom att= patcha >>>>>>>>>>>> funktioner i efterhand f=C3=B6r att f=C3=A5 lite b=C3=A4ttre r= adnummer f=C3=B6r pyton >>>>>>>>>>>> funktioner i tracebacks, kunna kompilera till python automagis= kt genom att >>>>>>>>>>>> titta p=C3=A5 extension =C3=A4ndelsen p=C3=A5 filen samt att u= ndertrycka warningar som >>>>>>>>>>>> inte e sanna f=C3=B6r att undvika att dr=C3=A4nkas >>>>>>>>>>>> av varningar vilket e en godsend d=C3=A5 de varningar som dyke= r upp >>>>>>>>>>>> vanligtvis pekar p=C3=A5 en bugg. Jag skulle tro >>>>>>>>>>>> att wingo mekat med warningssystemet s=C3=A5 jag m=C3=A5ste mo= difiera >>>>>>>>>>>> dessa patchar. >>>>>>>>>>>> >>>>>>>>>>>> On Fri, Apr 16, 2021 at 9:36 AM Mikael Djurfeldt < >>>>>>>>>>>> mikael@djurfeldt.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> On Fri, Apr 16, 2021 at 9:28 AM Stefan Israelsson Tampe < >>>>>>>>>>>>> stefan.itampe@gmail.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> vilken version av guile k=C3=B6r du? >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> HEAD av master >>>>>>>>>>>>> >>>>>>>>>>>> --0000000000009ddbd005c03265c2 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I have continued to debug python for guile 3.1 and I am no= w getting much less warnings and also I can run test cases and it looks goo= d. Tip, To run unit tests one can do from the module directory=C2=A0in the = dist

python language/python/module/unittest/tests/test_case.py=

to see what's working and what's no= t working.

I am also working on getting it to beha= ve better and especially take advantage
of guile's new reader= to introduce python source=C2=A0code numbering instead of the generated sc= heme code's numbering. Note that in python on guile I only modified the= reader so that it reads python code and spit's out scheme code. So I t= hen use some macros to modify line and columns to the python code. This way= I can take advantage of the python=C2=A0scheme interface as the design goa= l is to be able to write pythonistic constructs in scheme code via a big ch= unk of macrology. Thanks=C2=A0to wingos work on the reader=C2=A0and making = sure that the syntax objects contains the source location info, much of the= dangerous clucky stuff that was added to get some kind of line numbering i= s now removed for version 3.1 of guile, we still support 2.0,2.1,2.2,3.0 as= well. But the older version is less tested.

I wil= l not release=C2=A0a new version=C2=A0of python immediately as I continue t= o work on making the new version more robust against the 3.1 target and wil= l try to continue to reduce the test cases that fail.

On Sat, Apr 17, = 2021 at 2:30 PM Stefan Israelsson Tampe <stefan.itampe@gmail.com> wrote:
Om man har ett filnamn = kan jag l=C3=A4gga in den i syntax-object och meta information finns i file= n som python antar
existerar. S=C3=A5 p=C3=A5 n=C3=A5got s=C3=A4tt beh= =C3=B6ver=C2=A0jag det infot. Man kan ha en fluid som n=C3=A4r man kompiler= ar en fil, s=C3=A5 f=C3=A5r den nuvarande compilations identitet och annars= #f. Anv=C3=A4ndaren =C3=A4r ansvarig att kolla ifall fluiden =C3=A4r #f oc= h anv=C3=A4nde n=C3=A5got default v=C3=A4rde, t.ex. n=C3=A4r man evaluerar = python kod i shell milj=C3=B6n.

<= div dir=3D"ltr" class=3D"gmail_attr">On Sat, Apr 17, 2021 at 1:40 PM Mikael= Djurfeldt <mi= kael@djurfeldt.com> wrote:
...och vad h=C3=A4nder om man pipe:ar i= n kod i kompilatorn s=C3=A5 att ingen giltig fil finns? Hur g=C3=A5r det d= =C3=A5?

Den l=C3=B6r 17 apr. 2021 13:38Mikael Djurfeldt <mikael@djurfeldt.com> skre= v:
OK, det verkar ju vara en rimlig beg=C3=A4ran.

Kan vi hitta ett giltigt "use case" d=C3=A4= r detta =C3=A4r motiverat? Jag =C3=A4r ute efter att st=C3=A4rka argumentat= ionen h=C3=A4r.

Varf=C3= =B6r beh=C3=B6ver pythonkompilatorn veta detta?

=
Mvh
Mikael

Den l=C3=B6r= 17 apr. 2021 13:28Stefan Israelsson Tampe <stefan.itampe@gmail.com= > skrev:
=
Hmm, jag har fixat detta p=C3=A5 ett annat s=C3=A4tt nu. D= u kan g=C3=B6ra en update av guile-persist och python-on-guile f=C3=B6r att= f=C3=A5 n=C3=A5got som ska fungera b=C3=A4ttre med b=C3=A4ttre rad h=C3=A4= nvisningar till python kod och f=C3=A5 varningar.

Nu =C3= =B6ver till n=C3=A4sta grej. Om vi kompilerar en fil so vill jag i min pyth= on compilator veta vilket filnamn vi compilerar. Hur f=C3=A5r jag tag p=C3= =A5 det standardm=C3=A4ssigt?

mvh
Stefan=

On Fri, Apr 16, 2021 at 11:57 PM Mikael Djurfeldt <mi= kael@djurfeldt.com> wrote:
Tyv=C3=A4rr =C3=A4r det nog s=C3=A5= med mig att jag =C3=A4nd=C3=A5 inte f=C3=B6rst=C3=A5r varf=C3=B6r den h=C3= =A4r funktionaliteten beh=C3=B6vs.

Rimligtvis bord= e varningar (och fel, f=C3=B6r den delen) vara undantagsfall s=C3=A5 att de= n h=C3=A4r situationen som du beskriver---att det blir en uppsj=C3=B6 av va= rningar---aldrig borde intr=C3=A4ffa.

Nu =C3=A4r d= et ist=C3=A4llet s=C3=A5 att vi har en mekanism som leder till denna uppsj= =C3=B6 av varningar. Och fr=C3=A5gan, tycker jag, =C3=A4r om man p=C3=A5 n= =C3=A5got vis kan fixa problemet redan p=C3=A5 den niv=C3=A5n snarare =C3= =A4n att d=C3=A4mpa varningarna---jag menar se till att varningarna aldrig = uppst=C3=A5r.

Dessv=C3=A4rre f=C3=B6rst=C3=A5r jag= fortfarande inte exakt hur de h=C3=A4r varningarna uppst=C3=A5r. Visst kun= de jag dyka ned i koden, men det skulle nog ta ganska l=C3=A5ng tid s=C3=A5= jag ber fortfarande om hj=C3=A4lp att f=C3=B6rst=C3=A5.

Kan du ge ett enkelt exempel med en enkel klass d=C3=A4r du konkret = kan visa vilken bindning till vilket objekt som skapas och varf=C3=B6r det = ger en varning?

Ledsen att jag =C3=A4r s=C3=A5 pet= ig...

On Fri, Apr 16, 2021 at 10:54 PM Stefan Israelsson Tampe &l= t;stefan.itampe@gmail.com> wrote:

I = huvudsak, n=C3=A4r jag skapar python classer=C2=A0s=C3=A5 sparas en bindnin= g till en del object i classen=C2=A0i modulen
programatiskt=C2=A0som t.= ex. medlemsfunktionerna.=C2=A0Detta anv=C3=A4nds n=C3=A4rman serialiserar= =C2=A0classer=C2=A0och speciellt
do de medlemmar, s=C3=A5 n=C3=A4= r man kan g=C3=B6ra x=3D[A.fkn1,B.fkn2], och g=C3=B6ra en deepcopy=C2=A0p= =C3=A5 x, serialisera och deserialisera=C2=A0utan att g=C3=A5 in p=C3=A5 fu= nktionerne=C2=A0i sig som e b=C3=B6kit=C2=A0och kan ta mycket kraft. Har en= ganska komplett serialiserings funktion i guile persist som anv=C3=A4nds a= v guile python f=C3=B6r copy,deepcopy och pickle. D=C3=A4r kan man serialis= era t.ex. Generatorer och iteratorer (om de inte anv=C3=A4nder o boxade=C2= =A0variabler i stacken) vilket f=C3=B6r python kod e fallet d=C3=A5 set! an= v=C3=A4nds f=C3=B6r att boxa alla variabler. (Detta kan man=C2=A0inte g=C3= =B6ra i python :-)) en tycker det e en farlig men mycket cool feature d=C3= =A5 det vill till en massa C magi f=C3=B6r att fixa till detta (guile-persi= st) men som sagt var tack vare att vi skapar en l=C3=A4nk ifr=C3=A5n modul = till medlemsvariabler s=C3=A5 minskas behovet av C-kod ganska dramatiskt.= =C2=A0

De =C3=A4r ocks=C3=A5 praktiskt n=C3=A4r ma= n l=C3=A4nkar in C-kod, va f=C3=B6r mig att min gamla version av guile wran= ade n=C3=A4r man anv=C3=A4nder dessa inl=C3=A4nkade funktioner. S=C3=A5 det= vore bra d=C3=A4r med att hindra varningar att uppst=C3=A5. =C3=84nne sena= re versioner kunde man g=C3=B6ra (define f #f) innan f sattes ab c-koden oc= h hindra varningar. Men nu verkar denna
metod slutat fungera. S= =C3=A5 i de fall n=C3=A4r man f=C3=A5r typ s=C3=A5dana problem kan den f=C3= =B6reslagna metodiken fungera bra.

=C3=96ver till = var with ... ska l=C3=A4nkas in.

jag moddade compi= le-file (system base compile) f=C3=B6r att kn=C3=B6 till detta, funkat bra = med detta men det kan finnas
b=C3=A4ttre st=C3=A4llen att s=C3=A4= tta in den, och n=C3=A4r jag tittade p=C3=A5 koden s=C3=A5 e nog det b=C3= =A4sta st=C3=A4llet funktionen 'compile' i samma module.
=

On Fri, Apr 16, 2021 at 9:22 PM Mikael Djurfeldt <mikael@djurfeldt.com> wrote:
S=C3=A5 det r=C3=B6r sig om top= level bindings i moduler?

Dum fr=C3=A5ga: Varf=C3=B6r =C3=A4r den inte bunden n=C3=A4r den anv=C3= =A4nds?

=C3=84r det komp= ilatorn som =C3=A4r =C3=B6vernitisk och i sj=C3=A4lva verket hinner variabe= ln bli bunden dynamiskt innan den verkliga anv=C3=A4ndningen?

Finns n=C3=A5gon s=C3=A4rskild anledn= ing till att det blir mer s=C3=A5dant n=C3=A4r man kompilerar Python?
=

Och, vet du var, mer precist,= som anropet till with-no-warnings-for-symbol ska placeras?

Den f= re 16 apr. 2021 11:02Stefan Israelsson Tampe <stefan.ita= mpe@gmail.com> skrev:
Vi tar den patch som =C3=A4r viktigast och en= klast f=C3=B6rst,

Vi beh=C3=B6ver ett system f=C3=B6r at= t kunna undertrycka varningar=C2=A0f=C3=B6r att en modules symbol inte =C3= =A4r bunden n=C3=A4r den anv=C3=A4nds. Att skriva ut s=C3=A5dana varningar= =C2=A0n=C3=A4r den =C3=A4r viktig =C3=A4r ett av guiles starka sidor j=C3= =A4mf=C3=B6rt med t.ex. python. Men med python kompilering=C2=A0s=C3=A5 f= =C3=A5r vi ett ton av symboler som varnas=C2=A0f=C3=B6r och vi f=C3=B6rlora= r guldklimparna i allt skr=C3=A4p som skrivs ut. Med min patch har jag f=C3= =A5ngat otaliga buggar i python libbet=C2=A0faktiskt som jag skulle=C2=A0
ha missat om jag inte patchat warnings systemet eller anv=C3=A4nt = cpython

F=C3=B6reslagen API:

<= div>(define *no-warning-for-symbol-map* (make-fluid #f))

(define (no= -warn-printout-for-symbol? symbol)
=C2=A0 (let ((symmap (fluid-ref *no-w= arning-for-symbol-map*)))
=C2=A0 =C2=A0 (if symmap
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 (hash-ref symmap symbol)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 #f)))
(define (with-no-warnings-for-symbol thunk)
=C2=A0 (with-fluids ((*= no-warning-for-symbol-map* (make-hash-table)))
=C2=A0 =C2=A0 (thunk)))
(define (add-no-warning-for-symbol symbol)
=C2=A0 =C2=A0(wh= en (not (symbol? symbol))
=C2=A0 =C2=A0 =C2=A0 =C2=A0(error "= ;add-no-warning-for-symbol symbol takes a symbol as argument"))
<= div>
=C2=A0 (let ((m (fluid-ref *no-warning-for-symbol-map*)))
=C2=A0= =C2=A0 (if m
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (hash-set! m symbol #t)
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 (error "adding symbol to inhibit warning outs= ide of compilation"))))


;; API=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

;; 'add-no-warning-fo= r-symbol'
;; =C2=A0 =C2=A0ska vara synlig f=C3=B6r guile anv=C3=A4nd= aren
;; =C2=A0 =C2=A0Man kan h=C3=A4r under kompilering l=C3=A4gga till = en symbol som inte ska warnas
;; =C2=A0 =C2=A0f=C3=B6r att den e odefini= erad

;; 'no-warn-printout-for-symbol?'
;;=C2=A0 =C2=A0 va= ringsystemet ska kolla med denna om den ska skriva ut en varning f=C3=B6r;; =C2=A0 =C2=A0anv=C3=A4ndandet av en obunden variable

;; 'wi= th-no-warnings-for-symbol'
;; =C2=A0 =C2=A0scheme kompilerings syste= met ska anv=C3=A4nda denna f=C3=B6r att alla kompilerings
;; =C2=A0 =C2= =A0moduler ska f=C3=A5 en egen no-warn hashmap

Mvh
<= div>Stefan

On Fri, Apr 16, 2021 at 10:16 AM Mikael Djurfeldt <mikael@djurfeldt.com> wrote:
Jag vet inte o= m du k=C3=A4nner till det, men jag har varit en av Guile's maintainers = och k=C3=A4nner =C3=A5tminstone Ludovic hyfsat v=C3=A4l. Jag har dessutom s= krivr=C3=A4ttigheter i repositoryt. D=C3=A4rf=C3=B6r borde jag kunna hj=C3= =A4lpa dig att f=C3=A5 in saker.

Ska vi kanske b= =C3=B6rja med n=C3=A5got enkelt, dvs inte en hel bunt patchar utan *en* fun= ktion som du beh=C3=B6ver?

Du skulle tex kunna vis= a mig den och f=C3=B6rklara syftet f=C3=B6r mig.

M= vh
Mikael


On Fri, Apr 16, 2021 at 10:11 AM Stefan Is= raelsson Tampe <stefan.itampe@gmail.com&g= t; wrote:
Jag har f=C3=B6rs=C3=B6kt f=C3=A5 in den i guile flera ggr men f= =C3=A5r ingen repsons. Jag beh=C3=B6ver bra debuginformation=C2=A0f=C3=B6r = att kunna komma fram=C3=A5t=C2=A0i fels=C3=B6kningen, vilket =C3=A4r anledn= ingen att denna funktionalitet finns d=C3=A4r. Jag kan st=C3=A4nga dessa mo= ddar f=C3=B6r trunk om du vill. Radnummer i syntax objecten e ju perfekt. D= =C3=A5 ska man modda dessa i st=C3=A4llet (och f=C3=A5 b=C3=A4ttre funktion= ) och man slipper den moddningen. Jag ska ta ner trunk och studera detta.
Stefan

On Fri, Apr 16, 2021 at 10:00 AM Mikael Djurf= eldt <mikael@djurfeldt.com> wrote:
= Min =C3=A5sikt =C3=A4r att det du g=C3=B6r i detta avseende inte =C3=A4r en= effektiv strategi.

Obs att du, som utvecklare av = ett alternativt spr=C3=A5k i Guile, har giltiga sk=C3=A4l att f=C3=A5 den f= unktionalitet du beh=C3=B6ver tillgodosedd av Guile. D=C3=A4rf=C3=B6r b=C3= =B6r du beg=C3=A4ra att den kommer in i Guile, och d=C3=A5 kommer den funkt= ionaliteten att underh=C3=A5llas d=C3=A4r.

Att pat= cha Guile, samt att underh=C3=A5lla s=C3=A5dana patchar, =C3=A4r d=C3=B6mt = att kontinuerligt skapa en massa on=C3=B6digt jobb.

Mvh
Mikael

On Fri, Apr 16, 2021 at 9:51 AM Stefan Isra= elsson Tampe <stefan.itampe@gmail.com>= wrote:
Hmm, jag k=C3=B6r 3.0.4 sj=C3=A4lv. Jag moddar guile genom att pat= cha funktioner i efterhand f=C3=B6r att f=C3=A5 lite b=C3=A4ttre radnummer = f=C3=B6r pyton funktioner i tracebacks, kunna kompilera till python automag= iskt=C2=A0genom att titta p=C3=A5 extension=C2=A0=C3=A4ndelsen p=C3=A5 file= n samt att undertrycka warningar=C2=A0som inte e sanna f=C3=B6r att undvika= att dr=C3=A4nkas
av varningar vilket e en godsend d=C3=A5 de varningar= som dyker upp vanligtvis pekar p=C3=A5 en bugg. Jag skulle tro
a= tt wingo mekat med warningssystemet=C2=A0s=C3=A5 jag m=C3=A5ste modifiera d= essa patchar.

On Fri, Apr 16, 2021 at 9:36 AM Mikael Djurfeldt <mikael@djurfeldt.com> wrote:
= On Fri, Apr 16, 2021 at 9:28 AM Stefan Israelsson Tampe <stefan.itampe@gmail.com> wrote:
vilken version av guile k=C3=B6r du?

<= div>HEAD av master
--0000000000009ddbd005c03265c2--