My preference would be to produce a standard API library which I think could be called brickOS/EV3, i.e., after the original brickOS for the RCX. My approach so far to this API has been to model the functions after the NXC API so that in C/C++ and Pascal you could write code that looks a lot like NXC code and have it run natively as an arm-linux app. If you have been following my progress with respect to BricxCC support for the EV3 you may have seen some videos I posted on YouTube showing off some bits of the API that I have working already. Of course, a higher level object oriented API for C++ and Pascal would be nice to have as well and there would be no reason to base that off of NXC API function names.
In any case, what I have working either completely or partially is support for the EV3 buttons, the EV3 LEDs, the EV3 LCD screen, and the EV3 motors. Xander has some API functions working for EV3 sensors, which I have not yet merged into my API library. I have all of these working both in C and Pascal except for the LCD screen support which is currently ahead on the C/C++ side of things.
My work can be found in the BricxCC test releases folder at http://bricxcc.sourceforge.net/test_releases/
. Look here for lms_api.zip and lms_api_pascal.zip. Also have a look at readme_1st.txt for instructions regarding how to configure your system so that BricxCC can work with the CodeSourcery Lite cross compiler.
In case somebody here is not completely aware, BricxCC currently supports compiling, downloading, and running native arm-linux executables on the EV3. There are a lot of things with respect to this support that need work/improvement but I used BricxCC to compile and download the snapshot binary which is what enables BricxCC's Screen Capture tool for the EV3 and you can launch that and other arm-linux binaries via the Explorer tool as well as via the Run toolbar button/menu option.
David Gilday has used the libev3.so shared library along with his C++ code to build his latest cube solver. To successfully run C++ binaries on the EV3 you will need to configure the runtime path via an LD switch to look in /media/card/lib in addition to the standard library paths configured on the EV3 and you will need to copy the C++ shared runtime library from the CodeSourcery folder to a lib folder at the root of your micro SD card which you then would place in your EV3. A future test release of BricxCC will update the makefile template to include the required flags to enable this - and I may try to automate the shared library download.