Live data from Hacker News

SPy: An interpreter and compiler for a fast statically typed variant of Python

antocuni.eu

11–20 of 133 posts

Re: SPy: An interpreter and compiler for a fast statically typed variant of Python

#11
post #7

Looks very interesting! I remember chatting with one of the creators of PyPy (not the author of TFA) a number of years ago at HPI. He had just given a talk about how RPython was used in PyPy development, and I was fascinated. To me, it seemed completely obvious that RPython itself seemed like a really interesting standalone language, but he would have none of it. Whenever I suggested that RPython might have advantage…

I have asked about using RPython as a generic standalone language before. I think the official statement is that is was never intended to become one, and it's really a very minimal subset of Python (so basically no existing Python code will run, it would require heavy refactoring or complete rewrite), and it's only specifically those features that they currently need, and it might also be a moving target, and they don't want to give certain guarantees on stability of the language etc.

Once you consider that you anyway need to write very different kind of code for RPython, then maybe just using Nim or some other language is a better idea?

Re: SPy: An interpreter and compiler for a fast statically typed variant of Python

#13
post #5

If you want different parts of your code to be a statically typed Python lookalike Cython is a mature option

Yes, it's mature, but you (and your potential audience) basically need to learn a new language, a lot of quirks and "weird" (I'd even say counter-intuitive) nuances, and it's also significantly less readable in comparison with strict and typed Python. Even its modern syntax doesn't click immediately (also performance wise the new syntax somehow is a bit slower in my tests)

Re: SPy: An interpreter and compiler for a fast statically typed variant of Python

#14

I like the idea of a compiled language that takes the look and ethos of Python (or at least the "looks like pseudocode, but runs"-ethos) I don't think the article gives much of an impression on how SPy is on that front.

I believe that Python is as popular and widely used as it is because it's old enough to have an expansive ecosystem of libraries. It's easy enough to implement one in pure Python and possible to optimize it later (Pydantic is a great recent-ish example, switching to a Rust core for 2.0). That same combination of Python + (choose a compiled language) makes it quite difficult for any new language to tap into the main strength of Python.

Re: SPy: An interpreter and compiler for a fast statically typed variant of Python

#15

I like the idea of a compiled language that takes the look and ethos of Python (or at least the "looks like pseudocode, but runs"-ethos) I don't think the article gives much of an impression on how SPy is on that front.

You can have that today with Nim.

Nim feels like a really amazing language. There were some minor things that I wanted to do with it. Like trying to solve a codeforces question just out of mere curiosity to build something on top of it.

I felt like although it was similar to python. You can't underestimate the python's standard library features which I felt lacking. I am not sure if these were skill issues. Yes these are similar languages but I would still say that I really welcome a language like SPy too.

The funny thing is that I ended up architecting a really complicated solution to a simple problem in nim and I was proud of it and then I asked chatgpt thinking no way there can be anything simpler for it in nim and I found something that worked in 7-10 or 12* lines and my jaw dropped lol. Maybe chatgpt could be decent to learn nim imo or reading some nim books for sure but the packages environment etc. felt really brittle as well.

I think that there are good features of both nim and SPy and I welcome both personally.

Re: SPy: An interpreter and compiler for a fast statically typed variant of Python

#16
post #6

This seems to be going for a somewhat similar goal to Mojo [0] - anyone here who used both and is willing to offer a comparison? [0] https://www.modular.com/mojo

Based on my understanding, Mojo aims to make number crunch computation faster (GPU), while as SPy aims to make generic Python application logic faster. Very similar, but different sweet spots and use cases.

Re: SPy: An interpreter and compiler for a fast statically typed variant of Python

#17
post #6

This seems to be going for a somewhat similar goal to Mojo [0] - anyone here who used both and is willing to offer a comparison? [0] https://www.modular.com/mojo

Based on my understanding, Mojo aims to make number crunch computation faster (GPU), while as SPy aims to make generic Python application logic faster. Very similar, but different sweet spots and use cases.

While GPU is a focus of Mojo, it is also planned to make it a general system programming language similar to C++ and Rust.

Re: SPy: An interpreter and compiler for a fast statically typed variant of Python

#19
post #6

This seems to be going for a somewhat similar goal to Mojo [0] - anyone here who used both and is willing to offer a comparison? [0] https://www.modular.com/mojo

Time for me to remind everyone of the Shedskin Python compiler.

https://shedskin.github.io/

Re: SPy: An interpreter and compiler for a fast statically typed variant of Python

#20

I like the idea of a compiled language that takes the look and ethos of Python (or at least the "looks like pseudocode, but runs"-ethos) I don't think the article gives much of an impression on how SPy is on that front.

This is what F# provides.

F# has a similar whitespace syntax to Python, but is statically typed and can be compiled AoT.

Bubble sort Python:

    mylist = [64, 34, 25, 12, 22, 11, 90, 5]

    n = len(mylist)
    for i in range(n-1):
      for j in range(n-i-1):
        if mylist[j] > mylist[j+1]:
          mylist[j], mylist[j+1] = mylist[j+1], mylist[j]

    print(mylist)


Bubble sort F#:

    let mylist = ResizeArray [ 64; 34; 25; 12; 22; 11; 90; 5 ]

    let n = Seq.length mylist
    for i = 0 to n - 2 do
      for j = 0 to n - i - 2 do
        if mylist[j] > mylist[j + 1] then
          let temp = mylist[j]
          mylist[j] 
Post reply on HN