Wykres commitów

357 Commity (eecd6c755c2293b7cf2402cd40ac464fbe2654d8)

Autor SHA1 Wiadomość Data
Paul Sokolovsky eecd6c755c asyncio_micro: Optimize size of SysCall objects.
We have to have type header for any object, so use type to "store"
information about syscall type (my initial idea was to have single
syscall class and dispatch on its attribute, that would save memory
on having bunch of classes, but would increase size of each syscall
object).
2014-10-11 05:19:51 +03:00
Paul Sokolovsky 123b8cc1ee asyncio_micro: Move handle() method to SysCall base class. 2014-10-11 05:19:51 +03:00
Paul Sokolovsky 6d8cfcde46 asyncio_micro: Clean up logging. 2014-10-11 05:19:51 +03:00
Paul Sokolovsky 26d76576e4 asyncio_micro: Support just plain "yield" for cooperative control yield. 2014-10-11 05:19:51 +03:00
Paul Sokolovsky ae4fa7f93a asyncio_micro: Rename StreamWriter.write() to awrite().
This method has different semantics than original asyncio, so rename to avoid
confusion. Original asyncio's is not a coroutine, while ours is.
2014-10-11 05:19:51 +03:00
Paul Sokolovsky fe23bdfa18 asyncio_micro: Add basic HTTP server example. 2014-10-11 05:19:51 +03:00
Paul Sokolovsky 1d9f7856f6 asyncio_micro: Implement proper write() handling.
TODO: Test!
2014-10-11 05:19:51 +03:00
Paul Sokolovsky 27546eaf53 asyncio_micro: Support readall semantics and handle non-blocking read() well.
Non-blocking read()/write() may return None if there's no data, and that's
not EOF.
2014-10-11 05:19:51 +03:00
Paul Sokolovsky 875de44134 asyncio_micro: Add support for starting a coroutine concurrently.
Just yield it as a value. Also, improve logging/error reporting.
2014-10-11 05:19:51 +03:00
Paul Sokolovsky 48671ce22e asyncio_micro: IODone syscall should return to coroutine. 2014-10-11 05:19:50 +03:00
Paul Sokolovsky 4218e7d504 asyncio_micro: Implement start_server(). 2014-10-11 05:19:50 +03:00
Paul Sokolovsky 4e3964d3ff asyncio_micro: StreamReader, StreamWriter: add more methods. 2014-10-11 05:19:50 +03:00
Paul Sokolovsky 6f27ec1cd0 asyncio_micro: Work around stupid Python closures.
Which don't close variables, just variable references.
2014-10-11 05:19:50 +03:00
Paul Sokolovsky a728368a08 asyncio_micro: Rename from asyncio.
As this is not compliant with asyncio API, can't be called asyncio, and
"micro" is just good moniker for what it's intended to be.
2014-10-11 05:19:50 +03:00
Paul Sokolovsky 6347de1537 asyncio: Clean up code a bit. 2014-10-11 05:19:50 +03:00
Paul Sokolovsky dab2a2233e asyncio: Remove polling sleep implementation, it belongs in async_slow. 2014-10-11 05:19:50 +03:00
Paul Sokolovsky dd80d18866 asyncio_slow: Add example of wait() from docs. 2014-10-11 05:19:50 +03:00
Paul Sokolovsky be628acf7d asyncio_slow: Fix wait: again, should not schedule anything itself. 2014-10-11 05:19:50 +03:00
Paul Sokolovsky 96cbb50e27 asyncio_slow: Add Future examples from docs. 2014-10-11 05:19:50 +03:00
Paul Sokolovsky 8711a45a13 asyncio_slow: Implement loop.stop(). 2014-10-11 05:19:50 +03:00
Paul Sokolovsky 3a639ce666 asyncio_slow: run_until_complete() should not schedule anyhing.
Everything should be scheduled either already, or async() does this.
2014-10-11 05:19:50 +03:00
Paul Sokolovsky 6bff4dbe72 asyncio_slow: Add example on chaining coros using "yield from" from docs. 2014-10-11 05:19:50 +03:00
Paul Sokolovsky 6ded654afe asyncio_slow: Add example for scheduling coro using Task. 2014-10-11 05:19:50 +03:00
Paul Sokolovsky 93178819b3 asyncio_slow: Add coroutine example from docs. 2014-10-11 05:19:50 +03:00
Paul Sokolovsky b0c4fc7536 asyncio_slow: Add callback example from docs. 2014-10-11 05:19:50 +03:00
Paul Sokolovsky 1d7b189e75 asyncio_slow: Fix call_soon(), add call_later(). 2014-10-11 05:19:50 +03:00
Paul Sokolovsky 5166ecbbd1 asyncio_slow: Start new upstream API-compatible asyncio implementation.
The trait of this implementation is that it doesn't use priority queue and
time scheduling, and instead does its all operations using polling, starting
with such basic one as sleep. On the other hand, this tries to implement
all (well, much) of upstream asyncio API and warts.

asyncio_slow: Rename from asyncio_micro.

It may turn out that this won't be "micro" at all. The main trait of this
implementation is that it stay 100% API compatible with upstream (in
those APIs which are implemented of course). It will also keep inefficient
implementation of event loop scheduling, to discourage its use. Here we go.
2014-10-11 05:19:50 +03:00
Paul Sokolovsky 4c4a74368a asyncio: Add basic asyncio stream interface test. 2014-10-11 05:19:50 +03:00
Paul Sokolovsky 2caed7ddef asyncio: Handle end of stream condition properly.
By removing any IO watches for associated file handle. The way it's
implemented tries to preserve OS-like separation between event loop and
tasks. So, stream to finish watching fd for IO also issues syscall,
instead of calling methods on loop instance directly. Calling method on
loop would be more efficient, but will require storing reference to loop
in each stream. And those separation matters...
2014-10-11 05:19:50 +03:00
Paul Sokolovsky e6ed3ffceb asyncio: Add basic loop.call_soon() test. 2014-10-11 05:19:50 +03:00
Paul Sokolovsky ebc6a1faf2 asyncio: Add asyncio.async() dummy factory function.
Not Task bloat implemented (so far?), so just identity function for CPython
compatibility.
2014-10-11 05:19:50 +03:00
Paul Sokolovsky 395e2ecee6 asyncio: Add remove_reader()/remove_writer(). 2014-10-11 05:19:50 +03:00
Paul Sokolovsky dddf237fb6 asyncio: Use logging and errno modules. 2014-10-11 05:19:50 +03:00
Paul Sokolovsky 40af791abf asyncio: Add dumb debug output. 2014-10-11 05:19:50 +03:00
Paul Sokolovsky 0762929bd3 asyncio: Start adding asyncio stream interface. 2014-10-11 05:19:49 +03:00
Paul Sokolovsky f9fd9ddd42 asyncio: Support read/write syscalls, and route vals both ways between coros. 2014-10-11 05:19:49 +03:00
Paul Sokolovsky b8f41198de asyncio: EpollEventLoop.wait(): support infinite wait. 2014-10-11 05:19:49 +03:00
Paul Sokolovsky dbb8857e15 asyncio: Make run_forever() actually run forever. 2014-10-11 05:19:49 +03:00
Paul Sokolovsky 7b5780bc66 asyncio: Recover eventloop's ability to work with callbacks.
Actually, coroutine support for call_soon() is a hack, in big asyncio coroutine
should be wrapped in Task object.
2014-10-11 05:19:49 +03:00
Paul Sokolovsky a80cf93d4a asyncio: Implement subclass implementing filedes watching interface. 2014-10-11 05:19:49 +03:00
Paul Sokolovsky fb41c0e2e3 asyncio: Initial prototype implementation. 2014-10-11 05:19:49 +03:00
Paul Sokolovsky e42b955c1d socket: Update for rename microsocket -> usocket. 2014-10-11 05:18:49 +03:00
Paul Sokolovsky d33f35334b _libc: Release 0.2.1. 2014-10-11 05:17:14 +03:00
blmorris 814071f45b _libc: Add support for MacOS X (using "libc.dylib"). 2014-10-06 23:39:22 +03:00
Damien George f2cb007ce5 sqlite3: Change return type of column_double from "f" to "d".
ffi now works properly with double return type, so this function can
return the correct type.  Can confirm that sqlite3_column_double now
works correctly on 32-bit and 64-bit x86.
2014-09-10 21:06:54 +01:00
Paul Sokolovsky bc1ea4fc21 _libc: Version 0.2. 2014-09-08 20:02:42 +03:00
Paul Sokolovsky 165fbbd768 select: Add yet another workaround for struct epoll_event, this time for x86_64.
So, it's now clear that dealing with this struct should be rather moved on C side.
2014-09-06 19:36:28 +03:00
Paul Sokolovsky 22da54bc83 os: Version 0.1.9. 2014-09-06 17:13:28 +03:00
Paul Sokolovsky a9fd762b81 os: listdir(), walk(): Handle unicode strings properly.
CPython lib reference specifies that listdir() should accept both bytes and
str argument, and return value type should match the argument. But no such
stipulation is made for walk(), so we just return strings.
2014-09-06 17:06:07 +03:00
Paul Sokolovsky a3495c40bf os: Fix 64-bit Linux support.
ino_t and off_t types (d_ino and d_off fields) appear to be defined as unsigned
long on Linux.

TODO: Move readdir wrapper function to C, because DIRENT layout is inherently
OS-specific.
2014-09-06 17:04:05 +03:00