[03:16:21] <tos9> also really angry dudes on blog posts
[03:16:25] <scombinator> Count my unhappiness with py3 is not the transition. I have no real old code base to port. 2.7 is where I'd like to stay please
[03:16:38] <tos9> although there's some really really angry ones, so it may all be the same angry dude with lots of aliases.
[03:17:16] <Ivo> there are always angry dudes on blog posts
[03:17:23] <tos9> scombinator: No offense, but I don't think that's really a defensible position :)
[03:17:35] <Ivo> there will be for python 6 and ruby 29 and C++72
[03:17:51] <scombinator> tos9: I know I'm not going to be able to stay on 2.7 forever, I'm looking for where to jump to, but it won't be python3
[03:17:59] <tomprince> scombinator: Why are you unhappy?
[03:18:39] <scombinator> it's the unnecessary breakages. Unicode, fine. The solution isn't fantastic, but I appreciate it'll probably get there eventually
[03:19:43] <scombinator> Solution to division problem, changing print into a function... those are unnecessary. Why not change import into a function? Why not and?
[03:20:29] <scombinator> Those with 2.7 have been given a bit plate of fuck you, port your code, by a bunch of people with nothing better to do
[03:21:01] <tos9> They of course are unnecessary, the mindset around Py3 was a lot of "there are a few major problems to fix, and while we're at it we'll fix some minor warts"
[03:21:15] <tos9> But none of the minor warts are *really* where any of the effort in porting is
[03:21:28] <tomprince> Which, in hindsight, has perhas made things more difficult.
[03:21:29] <Ivo> so everyone should always support legacy platforms forever?
[03:21:31] <scombinator> That was stupid. You end up affecting more people
[03:21:35] <tos9> Or are enough, if I was someone coming fresh to Python, for me to say, uh I will look elsewhere
[03:22:16] <scombinator> Ivo: I'm not getting supported. There is no support for those who came to python because it looked like it had nice code, only for that to change
[03:23:45] <scombinator> bugfixes only, all real patches get told to fuck off
[03:24:02] <Ivo> which makes sense for maintenance
[03:25:57] <Ivo> http://www.python.org/dev/peps/pep-3105/ is the rational for print() and why print is ugly, if you're interested
[03:26:04] <scombinator> Python used to be the language without any horrible warts. Julia + R have 1-based indexing, as does lua which also has no integers (as does javascript). Scheme and common lisp have no community, go requires casting and horrible workarounds for its objects, ruby has no scientific community
[03:27:23] <Ivo> Python 2 is the one without warts and 3 has them?
[03:27:25] <scombinator> Ivo: print() is ugly. You look at any script with blocks of print statements, you can read the text, and still interpolate so it's understandable. you add parens everywhere - Why?! I thought we hated that shit - that's why if doesn't have them, right? but no, fuck consitency
[03:28:28] <Ivo> if you start with the a priori presumption that print is a statement then of course you will think its weird as a function
[03:28:29] <scombinator> division now has a horrible special case. Why not make it return complex numbers for every division if we want returns to be consistent? No, we don't because that'd be fucked
[03:28:54] <scombinator> Ivo: It is a statement - it's ONLY about sideeffects
[03:29:05] <Ivo> because 5 / 2 == 2 is utterly confusing to beginners?
[03:29:35] <tos9> This is why we all write sys.stdout.write "foo" too :)
[03:29:36] <scombinator> Ivo: 5/2 is a hard truth they are going to have to learn. Why bother with integers at all then? Just get rid of them if it's too confusing
[03:32:24] <stackless> estiban: sorry, I mis-spelled you (and yes you are gone)
[03:32:26] <Ivo> do you have some objective measure by which to say which are the 'hard truths' and which things are 'obvious' and what 'is obviously a statement'?
[03:33:25] <scombinator> print only ever really exists for interpreter, and small scripts
[03:34:05] <Ivo> which imho would question why it needs to be an entire language-level statement
[03:40:53] <tos9> are you [guys] prepared, beyond just 2.8, to attempt to standardize a set of things that you're going to call 2.8
[03:41:26] <stackless> yeah, lots of things, better than (uhm) -- print?
[03:44:41] <stackless> sure! well -- right now it is not that much but the support for recent windows compilers, tossing BSDDB, adding a few modules that some people need, plus "THE BIG PROMISE": (kidding)
[03:45:26] <stackless> "we will port whatever you need, if it makes sense and is doable in finite time"
[03:46:00] <stackless> (and if we find funding for non-trivial stuff, of course)
[03:47:32] <stackless> There is no limit per se. It just needs to make constructive sense for helping the migration.
[03:49:19] <stackless> there are simple things, there are hard things, and a few things are a re-write. The latter are not so likely to happen.
[03:50:08] <stackless> these are the inner structural changes which are real changes of the concept.
[03:50:54] <tos9> Hm, can you explain what you mean by that?
[03:51:54] <stackless> for instance: The change of the exception heirarchy are pretty impossible to port. I think that is something where it goes to the balls of the language.
[03:52:36] <tos9> The ones that reworked like IOError and friends?
[03:52:47] <tos9> Into a bunch of really specific errors?
[03:52:56] <tos9> [Sorry, my lack of py3 knowledge is going to show sooner or later :P]
[03:53:31] <stackless> put it the other was around: the print statement is just fluff. Much hype, little consequences, IMHO.
[03:54:27] <tos9> Have you thought about that? That's a thing that should have gone into 2.7 anyhow :/
[03:54:58] <stackless> tos9: yes. This is a crucial change that involves a lot of the interpreter. We are probably not going to try to patch that. That needs acceptance.
[03:55:37] <tos9> stackless: That was re: exception handling presumably, not pip?
[03:55:56] <stackless> The pip situation is a different story, of course. I have burnt my ears quite a bit on that before.
[03:57:15] <stackless> I accused the supporters for ignoring py3 way too long, because all changes were done for 2.7 in the first place.
[03:58:19] <stackless> I tried to talk them into changing strategy, because the python-dev efforts seemed to be different from the package maintainers view.
[03:59:18] <stackless> Actually I stepped out because that is hard for me to stand for a while, but things seem to work better.
[04:00:54] <stackless> just to tell you guis: I was on 2.6/7 till 2011, then in 2012 I took it on and forced myself to become a Python 3 guy.
[04:01:42] <scombinator> easier to shift languages entirely
[04:02:47] <stackless> and that was no fun. I ported lots and lots of modules, also on different projects, worked on ZODB, Watchdog, tried to enhance Durus, whatnot.
[04:02:57] <Ivo> moving between python 2 and 3 isn't hard though, in my experience
[04:03:00] <stackless> I really want to get forward.
[04:03:04] <tos9> Ouch. I don't bet ZODB was fun to port
[04:04:38] <stackless> well, the guys did a lot, but I made their zodbpickle very recent, because I wanted to use that, regardless of Python 2 or 3, I think the world needs a good object DB.
[04:05:33] <stackless> So after all the years, I decided to simply go and do things that I want to exist.
[04:05:53] <stackless> end of excursion. That's just my life.
[04:13:30] <Ivo> man you should've got it in 10 years ago, python could be on the fore-front of eventloop servers right now! :P
[04:13:34] <stackless> well, I believe that I was the reason why we have generators, today. It was implemented by Neil Schemenauer, as a response to my
[04:14:10] <stackless> tasklet implementation, just to show what is possible in plain python.
[04:14:52] <Ivo> you can see from the massive popularity of go and gevent that green threads are a great idea
[04:15:04] <stackless> Actually a good thig, and so I'm rather pleased with that. (Although it would be soo much er=asier... hum)
[04:15:33] <Ivo> asyncio has stolen some thunder now though getting into py3 :)
[04:17:13] <stackless> I do not claim anything. But I would have loved a Guido with his knowledge of today, back in 1998.
[04:17:37] <tos9> If we're time traveling, why not send him to 1798
[04:18:07] <Ivo> "Guys, snakes are awesome!" - gets burned at stake
[04:18:09] <stackless> asyncio is going to be what I always dreamt of, in a clean, well=designed manner.
[04:18:44] <tos9> It seems to me that it has the same issues as all of the new py3 libraries
[04:18:59] <stackless> that is where Guido is absolutely phantastic, and I cannot do that at all. This was the missing thing.
[04:20:05] <tos9> They're designed by decent developers, occasionally in domains they aren't necessarily the first choices for writing them but whatever, but then they're in the stdlib before any real users have chances to use them, at which point they're now locked in.
[04:20:32] <Ivo> I've talked to a guy also trying to do a non-gil'ed python, he didn't think the windows event loop was designed very well, and actually of the opinion that window's network async design was better than linux's, if you used it properly
[04:21:27] <stackless> are you referring to Trent Nelson's work, maybe?
[04:22:38] <stackless> I am taking a different route, again. Multiple interpreters, completely disjoint, with the ability to exchange data.
[04:23:18] <Ivo> tos9: actually, it's a provisional module
[04:23:38] <tos9> Ivo: What is a provisional module?
[04:23:42] <stackless> this is orthogonal to the STM thing that Armin Rigo does, and that is good, because this scales together.
[04:24:30] <tos9> Oh. I didn't know that PEP ended up accepted.
[04:25:29] <tos9> Ivo: (Not that it means much unless the Big Shift happens between 3.4 and 3.5)
[04:25:57] <stackless> Ivo: I talked to Trent at PyCon last year. Interesting. But convinced me that I want it different (hey, sorry)
[04:27:23] <stackless> I am thinking of multiple interpreters with no GIL, but for simplicity just a local one per interpreter: a LIL.
[04:28:18] <stackless> between these local interpreters, which all run in their totally disjoint interpreters, there are communination channels,
[04:28:51] <stackless> borrowed from Stackless, which borrowed that from Plan9
[04:29:25] <Ivo> stackless: if you haven't talked to him in a while, i imagine http://vimeo.com/79539317 would be an extremely interesting video to watch
[04:30:10] <stackless> only on a needed communication, these interpreters will interact and incolve some locking scheme.
[04:30:34] <Ivo> i haven't watched it yet either but I just remembered he said he was going to do an updated talk at the end of this year
[04:32:17] <stackless> (just reading with one eye) -- the general fault is the sharing idea. While great for a single process, it is wrong for many parallel cores.
[04:33:35] <stackless> That is what Python has to learn. We can tweak it artificially by extreme tricks like STM, but a language that relies on sharing from the ground needs a re-design, befor it scales.
[04:35:00] <stackless> That's what I'm going to build as a draft implementation: It does no longer fit the world. The world is replicating, copying, rarely
[04:35:21] <Ivo> you should really watch the video imho ;)
[04:35:30] <stackless> synchronizing, and that is the only concept what scales in the end.
[04:37:15] <stackless> eevee: which i effectively the same, therefore I don't distinguish the layouts. It is about the concept, not the implementation.
[04:37:53] <eevee> you don't think copying and mutating independently is very different from not being able to mutate in the first place?
[04:38:56] <stackless> things need to be as local as possible, however it is done. Things need to join when they need to communicate, no more.
[04:39:47] <dash> historically, the trouble with multiple interpreters in the same process is C extensions
[04:40:08] <stackless> eevee: there is of course a difference that is O(n) vs O(1) of course, but crucial is the concept of sharing vs copying.
[04:41:42] <stackless> the idea of "everybody has to see and obey what I change" vs "I can change what I like and others need to update" is dramatically different.
[04:42:55] <stackless> dash: in my rough concept, I therefore start with a "shared-nothing" concept, which is totally un-pythonic in the first place.
[04:43:58] <stackless> to get that usable will be the hard part. Things need to take actions in order to copy/share/participate in other things.
[04:44:14] <dash> all I mean is that interoperability with C means multiple OS processes
[04:44:56] <stackless> python by default goes the other war round. Perfect for a single process. Deadly for many cores that need to run as freely as possible.
[04:45:33] <sinistersnare> Im just randomly popping in now, but is there any wat that we dont just 'fork' CPython (if forking is the only option) but instead try to urge another project like PyPy or Stackless to head to a 2.8 or similar?
[04:46:36] <stackless> I want to build a proof of concept. Then I want to convince Guido and make him build the language concept which is right.
[04:47:45] <stackless> sinistersnare: we are actually talking PyPy and Stackless, I believe ;-)
[04:48:08] <sinistersnare> thats pretty cool, glad that youre working on it!
[04:48:54] <sinistersnare> stackless, do you talk to Guido?
[04:49:47] <stackless> sinistersnare: mentally right now, not yet implementing. Guido? Sure, in Montreal the latest.
[04:50:29] <sinistersnare> Cool, i wish i had the money to go to Pycon, but living a highschoolers budget :p
[04:51:14] <stackless> I wished that, too, but I'm spending the money, anyway :-P
[04:52:41] <sinistersnare> Yeah, ill just go to PyCon DC, cheap (hopefully!) and easy to get to!
[04:55:56] <stackless> dash: not necessarily multiple OS processes, although pretty close. You can have many threads, almost like processes, but still have a common memory pool. I think that is useful, between controlling processes and a single thread.
[05:05:35] <stackless> well, he is still missing the point, IMHO. I'm not into many small handlers of web servers, this always was the wrong emample.
[05:11:24] <stackless> good night, and thanks for all the fish -- Chris
[06:42:13] <dstufft> tos9: FWW asyncio is available on PyPI for 3.3, and haypo has it for 2.7 I think too (although probably slightly different given that nature of 2.7 vs 3.x)
[12:31:51] <itamar> faassen: hello. while you're in same awakeness timezone as I am - Future is cool looking for applications, but not useful for libraries (e.g. Twisted), because it makes things backwards incompatible
[12:32:07] <itamar> returned bytes objects suddenly have different behavior
[13:00:51] <itamar> thus twisted uses native bytes class, so on python 2 you get python 2 behavior and on python 3 you get python 3 behavior
[15:00:02] <faassen> itamar_away: will you be commenting on that issue? I think it'd be really valuable to get your perspective, so please!
[15:40:43] <faassen> I remember after engaging in a comp.lang.python discussion why I stopped arguing with people on mailing lists. I guess I got old, I can't do it so well anymore. :)
[16:05:56] <tos9> faassen: Now we jsut do it on IRC :)
[17:12:34] <tos9> mitsuhiko: haha. You linking 20 django tickets is way more useful than what I was about to do, which was just describe what would happen. So thanks.
[17:23:44] <tos9> dstufft: Just the unicode_literals stuff from yesterday. https://github.com/PythonCharmers/python-future/issues/22#issuecomment-31854142
[19:32:14] <Spanktar> maybe, rather than a full version (2.8) something more like a shim? A Python Shim for Python 2 code. Include it if you want to ace transitioning code. Discuss.