- 03 Apr, 2015 16 commits
-
-
Kirill Smelkov authored
-
Kirill Smelkov authored
We hook into SIGSEGV and handle read/write pagefaults this way. In this patch there goes stub code that only detects faults and determines (in arch specific way) whether fault was for read or write and there is a TODO to pass that information to higher level. It also comes with tests to detect we still crash if we access something incorrectly, so people could have coredumps and investigate them.
-
Kirill Smelkov authored
For BigFiles we'll needs to maintain `{} offset-in-file -> void *` mapping. A hash or a binary tree could be used there, but since we know files are most of the time accessed sequentially and locally in pages-batches, we can also organize the mapping in batches of keys. Specifically offset bits are so divided into parts, that every part addresses 1 entry in a table of hardware-page in size. To get to the actual value, the system lookups first table by first part of offset, then from first table and next part from address - second table, etc. To clients this looks like a dictionary with get/set/del & clear methods, but lookups are O(1) time always, and in contrast to hashes values are stored with locality (= adjacent lookups almost always access the same tables).
-
Kirill Smelkov authored
-
Kirill Smelkov authored
We'll be testing C code in a similiar-to-python way - keep test_*.c files nearby and compile/executing them as needed. Tests are run several times in several ways - as plainly compiled and also with additional error checkers: - AddressSanitizer - ThreadSanitizer - and similiar checkers from Valgrind
-
Kirill Smelkov authored
Like C bzero / memset & memcopy - but work on python buffers. We leverage NumPy for doing actual work, and this way NumPy becomes a depenency. Having NumPy as a dependency is ok - we'll for sure need it later as we are trying to build out-of-core ndarrays.
-
Kirill Smelkov authored
Like taking an exact integer log2, upcasting pointers for C-style inheritance done in a Plan9 way, and wrappers to functions which should never fail.
-
Kirill Smelkov authored
Modelled by ones used in Linux kernel.
-
Kirill Smelkov authored
It is an early project decision to use gnu99 & Plan9 C extensions, to simplify C code. So far we only build stub wendelin/bigfile/_bigfile.so . Makefile is introduced because there will be targets which are easier to handle at make level. For end users no make knowledge is required - usual `python setup.py build|install|...` work, redirecting to make where necessary. As was promised (e870781d "Top-level in-tree import redirector") setup.py contains install-time hooks to handle in-tree wendelin.py and install it as a module namespace. For sdist, we just use `git ls-files` info if we are in a checkout.
-
Kirill Smelkov authored
Prepare for building stuff and add commonly produced files to our .gitignore .
-
Kirill Smelkov authored
This will be a module to allow users to program custom file-like backends and latter memory-map content of files from the backend. For now just start the module structure.
-
Kirill Smelkov authored
Unfortunately in CCAN they made separation of list_head into list_head & list_node (for better type safety I suppose), but that leads e.g. to inablility to insert element in the middle of the list. We take the code from util-linux.git (v2.25-165-g9138d6f)[1] which claims LGPL license for it, with which we are fine. [1] https://git.kernel.org/cgit/utils/util-linux/util-linux.git/tree/include/list.h?id=v2.25-165-g9138d6f
-
Kirill Smelkov authored
CCAN[1] is a "Comprehensive C Archive Network" - a collection of useful C libraries to use. Wendelin.core will be a C project in big part, so having CCAN at hand is useful. We hook CCAN as git submodule, without copying it into git repo. Later on making source tarball distribution, the code will be injected into generated tarball, so there will be no additional dependencies to download something from network for end users. [1] http://ccodearchive.net/
-
Kirill Smelkov authored
For working copy checkout we would like to work on the source right-away, without putting it under additional wendelin/ (and possibly /core/) subdirectories. Add in-tree modules redirector which tweaks plain-python and pkg_resources-based imports so that e.g. import wendelin.bigarray while in-tree resolves to bigarray/__init__.py In installed state, there will be no such redirector, and code will be installed with conventional structure.
-
Kirill Smelkov authored
As a first step we want to make sure the code can be used by open-source projects without a problem. So GPLv3+ with wide exception for all open-source licenses.
-
Kirill Smelkov authored
The project to implement Out-of-core NumPy arrays in backward-compatible way.
-