Student work experience opportunities also exist for students who want to suggest their own project idea. Project suggestions must be relevant to HPCC Systems and of benefit to our open source community.
Find out about the HPCC Systems Summer Internship Program.
The project proposal application period for 2020 summer internships is now closed. Check back in the Fall for details about applying to join our 2021 program.
Submitting your own embedded language project
Not only are we very happy to accept suggestions/proposal for additional embedded languages not included in our Ideas List, we would like to encourage it!
Please read all the information below to make sure that you can commit to our requirements. Feel free to email the mentor to discuss your idea.
One of the challenges of this project, is to address how an external key-value store interacts with a distributed thor query so that the external datastore acts like a distributed file read by each node in the thor or where only a portion of a result is written. This is currently something the HPCC Systems developers are looking at and are actively discussing but have not resolved.
Additional languages are added to the system via a “plugin” system, and one of the existing plugins such as MySQL (available here), or Python (available here). Use these as examples of the sort of work required. Each completed plugin is considered to be a new feature addition to the HPCC Platform.
Completion of this project involves:
- Investigating the API for calling your chosen language from C/C++.
- Creating a simple wrapper for scalar values between the ECL embed API and your chosen language API using one of the existing embed plugin implementations as an example.
- Extending the simple wrapper to handle structured data.
- In parallel with the above, developing test cases for the plugin that include coverage of all data types both passed in and returned, including multi-threaded access from the ECL side. This includes testing the performance and throughput of the system for some examples that approximate to real-world usage.
By the mid term review we would expect you to have:
- Implemented a simple example that passes and returns scalar values (which are usually much simpler than passing/returning structures).
Backup Mentor: Richard Chapman
End of project