python / mypy

Optional static typing for Python
https://www.mypy-lang.org/
Other
18.46k stars 2.83k forks source link

Provide native multi-core concurrency and support scalable hardware strucutures #165

Closed HowardMei closed 9 years ago

HowardMei commented 11 years ago

Hi Jukkal,

Have you heard about software defined network (SDN) and multiple ARM core cluster server?

From the roadmap of mypy, it seems you're more interested in another general purpose implementation for python like pypy, which is interesting but might constrain the practical use of this project due to the burden of supporting vast legacy python code. Pypy team takes years' of effort to scratch the surface of the problem.

Do you have any intention of creating a python compatible/flavored DSL language to combine the elegance of python, the multi-core concurrency of Erlang and the type safety and many goodness of Haskell? It could be a killer language in my opinion :)

Why do we need above features in mypy more than others, like JVM/iOS/Android support?

Best Regards.

JukkaL commented 11 years ago

The current plan actually seems to be pretty close to what you are proposing --- but the roadmap on the web site is not quite up-to-date. The only big thing currently missing from the plans seems to be the DSL part. That's also something I've looked into, but I haven't written about it as I don't have any particular approach in mind yet.

Here are some thoughts:

I've been planning to write a blog post detailing my current ideas, but I've been too busy recently.

Please ask if you want to know more about the details.

HowardMei commented 11 years ago

Hi Jukkal, Thank you for the update. Your ambition is really adorable. I'm very excited to see these features are in your roadmap. DSL is not a problem if mypy support a flexible parsing/compiling scheme.

I can't agree more with your point 1. It's really hard. A tracing garbage collector like Java can definitely improve the performance at the cost of memory. IMO, the usage of multithreading can be narrowed down for data crunchers only. Let message passing and coroutines handle all other concurrent tasks. Performance of CPU/MEM-bound jobs might also be boosted by using TCMalloc, or the way like http://code.google.com/p/numexpr/wiki/MultiThreadVM.

Anyway, this is really a painful tradeoff. Maybe it's too greedy to ask for built-in solution for low memory embedded system. Also, the introduction of all these concurrency models in native level may inevitably break the compatibility of mypy with python, which I have no idea how important to you. Though I'd like to suggest you let pypy take that legacy burden. Full speed to the future is more enjoyable, bro :-)

It'll be very nice to read your detailed ideas when you have time to post. Best Regards.

spkersten commented 9 years ago

I guess this can be closed?

JukkaL commented 9 years ago

Yeah, this is no longer relevant.