When I attempted to update a sketch on codebender, to be compliant with the latest Arduboy library on GitHub, it would no longer compile. The Arduboy library version on codebender is out of date. Any sketches using begin(), clear() or others replacing deprecated functions will fail.
In general, is there some way to have the Arduboy library on codebender kept up to date in a timely manner, and is someone responsible for doing so?
It appears to me that codebender is currently still at Arduino IDE 1.0.x compatibility level. The Arduboy library is now using IDE 1.5/1.6 format, so it may not work at all until codebender updates to 1.6 compatibility.
Once version 1.0 of the Arduboy library is installed on codebender, the library will be configured for the production Arduboy. All Arduboy sketches on codebender that use the Arduboy library will no longer work on the DevKit Arduboys. Possible ways to get around this:
A copy of the sketch will have to be made and the Arduboy libraries will have to be copied into the sketch’s directory. The local copy of core.h will have to be modified so that #define ARDUBOY_10 is commented out and // #define AB_DEVKIT is uncommented.
A codebender user can make personal copies of sketches they wish to use and install a copy of the Arduboy library, with the above #define changes, as a personal library.
Hey guys, this is Vasilis, the founder of codebender
I just wanted to pitch in, since I can help with the discussion
We had a discussion with Kevin a while ago as to what could be done with the library and how to make it work with both the old and the current version of Arduboy, the suggestion I made is to have a function that specifies the pins of the old version, so that all codes will work with the new version by default, and you will only have to add an extra line in the setup() function to make it work with the Dev version
As Kevin mentioned, we take a lot of pride in making sure that we don’t break anyone’s code is affected when we add or update libraries, so we have a system that compiles all possibly affected codes to make sure nothing breaks, and notifies you when a library you use is updated, so it takes a bit to update it, but it’s for a good reason. In any case, we’ll have the new version of the library up and running within a week, once Kevin updates it
I’d also like to comment as for the 1.5/1.6 update, since you guys mentioned it. It’s coming, but the process is slow. And the reason being that 1.5, and 1.6, make a LOT of incompatible changes, which means that your codes would be affected and stop working if we were to just make the switch. With more than 100,000 sketches hosted on codebender, there are thousands that would stop working, so we’re working on a way to upgrade gradually, with the minimum possible issues the libraries and code hosted on codebender
Why not have the version of Arduino tool chain be configured on a per-project basis? Mark all existing projects as 1.0, and offer the choice in the UI so that a user could select 1.6 for projects when they’re ready. If you wait until every hosted project is ready for 1.6, you will never get there.
We’ve already used compiler defines, which work great with board files and the Arduino IDE. You pass the correct define and the library compiles the correct code - which is sometimes MORE than just simple PIN changes. Of course you could do it all in software but you pay the price in flash for having two sets of pins, two sets of button polling, etc. There could be some benefit in the future to consider hex files booting and working on different hardware, but until that is a requirement I think it’s bet to just compile exactly what is needed.
Is there a reason codebender can’t pass the proper define if you tell it which board is being compiled for?
Yes, I cant’ imagine how you’d make a large transistion like that in any other way. Let people mark libraries (or versions of) and projects as being one or the other, and then the platform just keeps the new stuff together and the old stuff together.
I really wouldn’t want to loose the advantages of developing the Arduboy to only support Arduino 1.6 or higher, just so it will work on codebender. I’d rather us just not use codebender until it’s 1.6 compatible.
The Arduboy is being released about a year after Arduino IDE 1.6 was. No one should have to develop code that remains 1.0.x backwards compatible, and not be able to take advantage of enhancements and new features available in 1.6.
Hey everyone, just wanted to let you know we are putting the finishing touches on the Codebender integration. We dropped the ball on this, and let the units ship out the door before we had done our homework.
Codebender is a great platform for people learning to program, it gives you a step by step instruction on how to set up the online IDE. It streamlines the process and you don’t have to download extra libraries or games, everything will be waiting for you on the Codebender cloud!
Stay tuned we will make a big announcement when it’s ready. Soon!