mattalexpugh / mds Goto Github PK
View Code? Open in Web Editor NEWThis project forked from hewlettpackard/mds
Fork of MDS for Python API work
License: GNU General Public License v3.0
This project forked from hewlettpackard/mds
Fork of MDS for Python API work
License: GNU General Public License v3.0
Steps required:
distutils
Finish this up and send a demo to Evan!
As per the C++ API -- smaller experiments on this need to be consolidated into a usable extension.
Majority of logic is implemented here already, but a lot of tests should be made to ensure it's working as anticipated.
There are some neat new features in Cython 0.27 which could be useful for the MDS Python API:
__richcmp__
-> __eq__
etc.PyObject
sBasic namespace support is present in the Python API, numerous components still required:
This is my current task -- getting these implemented. Key points:
Namespace
Namespace
Point 4 is most interesting, as is the key point of interoperability between languages in MDS:
Record
s declared fields in order to be considered compatibleRecord
s are only collections of these types (record_field*
) and contain no logicIn both primitives (and arrays thereof) we should use MDS's atomic operations for div
, add
, mul
, sub
instead of doing this in Python. This can be done with:
__i<op>__
boxing the relevant handle from MDS.
At present, *handle
objects are held on the stack in their wrapper objects. This may not be too problematic given they internally have a pointer to elements on the gc_heap
, but it may be more prudent to use Cython's existing shared_ptr
bindings to hold these.
Further to this, where we are executing Python code through IsolationContext
and Task
, we need to make sure that Python's reference counting is correct on the objects returned to avoid memory leaks.
Port the existing tutorial document to the Python API
Steps to reproduce:
python -m unittest discover
If no error, simply repeat step 3:
/home/pughma/repo/public/mpgc/src/gc_thread.cpp:251: mpgc::mark_black(const mpgc::offset_ptr<const mpgc::gc_allocated>&, mpgc::gc_control_block&, mpgc::Traversal_queue&)::<lambda(const mpgc::base_offset_ptr*)>: Assertion 'ptr.is_valid()' failed.
At present, extensions are packaged/namespaced at very coarse granularity to save time in the continual recompilation during testing. A more obvious and/or natural ordering may be possible; this should be investigated before the final release is pushed upstream.
There are a number of methods provided by the view_independent_handle
object that currently aren't exposed (dealing with literal-templated types in current Cython requires delicate massaging). There are some useful methods that we're potentially missing, like uuid()
.
The simplest solution would just be to manually declare these methods in all concrete classes where we want them visible. This doesn't seem the nicest solution though; actually getting the hierarchy to resemble the C++ implementation would be good.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.