-
-
Notifications
You must be signed in to change notification settings - Fork 18.4k
BRANCH: libpandas native core experiments #11960
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BRANCH: libpandas native core experiments #11960
Conversation
A couple of thoughts, mainly about dtypes.
|
OT: what is your editor / debug setup for c++? |
what am I missing? |
Sorry, I haven't begun to address the build toolchain problem, so for the moment I've been developing using the portable C++ toolchain we're using for several projects being developed at Cloudera https://github.com/cloudera/native-toolchain . I'm not sure what to do here. We'll want to make it easy to add new C++ libraries that dynamically link to libpandas, but they'll need to get installed on the user's system somehow. conda? homebrew? What about Windows? Let me come up with some instructions that will work for you without necessarily requiring you to install the native-toolchain I linked above (though that may be the easiest thing). |
I need to get Travis CI passing anyway |
to your other comments
From pandas's point of view, there will only be
At least at the outset not very separable (making it so would be a lot of work with little benefit), but with some engineering effort the code could be made reusable. |
No — I think it's better to have a clean and flexible C++ API without the burdens of Python's C API object construction protocol and only wrap the objects in Python types when the user is interacting with them. |
@jreback I removed some of the currently-unneeded google thirdparty libraries. I'll add a thirdparty directory with googletest and get that building so Travis CI will work and we don't need to rely on an external toolchain for the moment. I'd like to add libraries like RE2, snappy, and lz4 to libpandas so we will need to figure out a dependency-hell avoidance strategy |
Phew OK I got the build working on OS X. Please let me know if
does not work for you so I can investigate further. I'll fix up the Travis CI build when I can and set it to only test the native core stuff for now |
ok, build procedure works for me (on osx)! (and your example above).
|
where do you want to put a list of API wishlist things for these structures? e.g.
|
I just started things on #11970 |
I'll start making the (long) list in a Google document that I'll link on that issue. I'll see about getting Travis passing on this branch and merge this into the integration branch. If you start hacking on this with me, this may be useful (also for my own reference since I make plenty of mistakes): https://google.github.io/styleguide/cppguide.html |
@wesm gr8. mainly acting as a 'user'/feature requestor for the moment |
OMG the build passed. @jreback have any idea why I had to twiddle I'm going to squash and merge this into the integration branch and move onto the next experiments later this week |
I guess that makes the confirmation go away on the apt-get installs we don't really use the included stuff too much except for very basics and use default compiler |
Gotcha. I just squashed and merged this PR into libpandas-native-core branch |
See afc53f0 |
Summary of implementation approach
pandas::Array
classI adapted several bits of code from github.com/libdynd/dynd-python to save me time sorting out issues with NumPy's PyArray_API global variable and other fun stuff. We'll need to add a copyright notice to the LICENSES directoy
Demo: