Over the past few days, I've been able to work on some Project Builder upgrades (and I want to particularly thank jacobly for the time he spent with me debugging some things ) :
"Refactor" (relatively minor, but not trivial either) of the eZ80_native backend architecture to better allow for a more direct usage of the upstream toolchain.
The PB now uses the latest toolchain and libs versions, while keeping compatibility for/with the old and existing projects.
Initial support of .cpp/.hpp files, which may be compiled only right now, and of course only with LLVM (they're not built, no ZDS linker involved, at least for now).
Warning, there's no C++ std lib support, but you way write classes, templates etc. (well, anything with the C++ syntax), but without using the STL, for example.
More generic and reliable dirty check (for launching builds)
Fix ctags getter when refreshing after saving files
Fix modal line numbers and refresh
New feature to display the LLVM unfiltered output alone as well, instead of only having a ZDS+LLVM diff view.
Better bootstrap tooltips
Feature to disallow creating implementation files with the same "common name" (i.e. you can't create a test.asm file if a test.c existed, as this would conflict later on during the build)
(Will be available soon on the public github repo)
(Also, yes that means you can write some C++17 for you 84+CE, because why not...)
You think this is a joke...
Skip to 27:55. The guy was basically proving that const leads to some pretty insane optimizations on the C64, but it also highlights that high-level programming doesn't necessarily mean that the compiled output will take more space.
Oh but I was and still am serious
Anyway "const" is indeed best practice, but C++17 (and 20 / experimental) brings a lot of really cool stuff as well (c++11 and 14 were also pretty cool, especially with better constexpr)
Ctrl-Click (or Cmd-Click on mac) on toolchain functions/defines etc. will open up the corresponding documentation line on GitHub
Trailing whitespaces are now trimmed on save
clang-provided warnings (as well as errors and diagnostics) are now shown inline, updated on each save and file switching
Other sources of warnings (ZDS, cppcheck) are still displayed, and have their name on the right.
Code re-indent feature available at the click of a button at the top-right of the editor
More optimal sorting of the autocompletion items
Finer file permissions in the backend
Better security checks on #include statements
Stricter clang warning flags when using llvm-eZ80
The backend toolchain is now just the same as on github with a (very) small patch to apply
The backend code got improved/refactored for several things, like error handling, permissions checking, action processing, DB usage (now generic)...
Ctrl-Hover(or Cmd-Hover on mac) improvements on compatibility and performance
Some eZ80 ASM ctags were not correct
The clang build output was not complete ; everything is now shown correctly.
Forking a project was not working if done on a project that didn't have saved files yet (ie: just created), and had incorrect error handling.
Re-sharing in RW a project that was shared then unshared at some point would result in having an old version of the files.
The Ctrl/Cmd-Hover popup was not destroyed when its word would get edited
Random typos got fixed
My thanks to:
- Lionel Debroux who's started code-reviewing and suggested quite a few interesting things, mostly aimed towards a more reusable/portable PB. Everything isn't done yet, but we're getting there!
- Runer112 too in particular, for feedback, testing, sorting ideas+code
- Everyone else who's tried/used the PB and provided feedback
Thanks And don't hesitate to suggest any features!
I'll be implementing .zip import this weekend, along with a belated ProjectBackend class generification on the backend.
I've improved the linewidget display yesterday following a comment by Runer, and even though it's not yet optimal under certain conditions (blame CodeMirror and CSS weirdness), it's better than before.
Between yesterday and today, I spent about a dozen hours on making the backend architecture of modules more generic, splitting in several layers what's specific and what's generic for the server-side processing things. I've also completed the DBHelper SQLite backend implementation (untested though!), if people are interested in it someday.
Anyway, it's becoming easier and easier to handle/add several modules in the Project Builder (even though I could still generify some more layers in the front-end, for instance a "front-end for a module using CodeMirror").
An overview of the general architecture according to PHPStorm, not showing fields/methods/etc. (we don't see what uses what, too bad ):
I finally did the rebase (well, I wrote a script to do it...) from the private repo to public repo, since early July.
There are only 2 files left not yet published, basically
Here are the 102 commits pushed: https://git.io/vF9hb
(And thanks to those who contributed to some of those commits, directly or indirectly, especially Mateo, Jacobly, Runer112, Lionel.)
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum