Shop OBEX P1 Docs P2 Docs Learn Events
Propeller Tool Future Possibilities — Parallax Forums

Propeller Tool Future Possibilities

This discussion was created from comments split from: Spin Tools IDE.

Comments

  • JonnyMacJonnyMac Posts: 9,158
    edited 2023-04-25 16:33

    With Parallax announcing the end of development of Propeller Tool, there is an opportunity for Spin Tools IDE to be the go-to for those of use who enjoy the look and feel of Propeller Tool. I'm tossing out these ideas which would make ST perfect for me, and I hope others will chime in, too -- I'm sure I'm missing something.

    Add custom library path(s) to File/Open From... flyout menu

    Add "Identify Hardware" to Tools menu

    Add PT-like hot keys to menus

    • F5 Preferences
    • F7 Identify Hardware
    • F8 Show Info
    • F9 Compile (see note below)
    • F10 Upload to RAM
    • Shift+F10 Upload to RAM with Terminal
    • F11 Upload to EE/Flash
    • Shift+F11 Upload to EE/Flash with Terminal
    • F12 Serial Terminal

    Add tool buttons to match most-used menu items

    • New P1
    • New P2
    • Open
    • Save
    • Cut
    • Copy
    • Paste
    • Search / Replace
    • Prefs
    • Hardware ID
    • Info
    • Upload to RAM
    • Upload to EE/Flash
    • Terminal
    • Help

    Allow user to modify rules for Format Source (I prefer 2 spaces in Spin)

    Allow user to modify syntax highlighting and terminal colors

    Allow "View Character Chart" (as in Propeller Tool) if Parallax font selected for Editor

    Long-term, I hope Spin Tools IDE will support the programmer's choice of compiler (internal, PNut P2, PNut P1, FlexProp, etc). This is where F9 Compile comes in.

    Thank you for your efforts on this project, Marco.

  • @JonnyMac said:
    With Parallax announcing the end of development of Propeller Tool, there is an opportunity for Spin Tools IDE to be the go-to for those of use who enjoy the look and feel of Propeller Tool.

    Wait, what? Parallax is discontinuing the Propeller Tool? When did they announce that? And what are they replacing it with?

  • @ersmith said:

    @JonnyMac said:
    With Parallax announcing the end of development of Propeller Tool, there is an opportunity for Spin Tools IDE to be the go-to for those of use who enjoy the look and feel of Propeller Tool.

    Wait, what? Parallax is discontinuing the Propeller Tool? When did they announce that? And what are they replacing it with?

    Not an announcement per-se, just a mention on live forum that it may be discontinued in the future since it needs a lot of maintenance and as previously exposited, can not be made open-source/cross-platform. The current idea is to replace the editing tools with the VSCode extension. The compiler may be re-created in TypeScript eventually, too.

  • I think they should be a bit more specific.

    There is a big difference between development being discontinued, meaning no longer developed and discontinuation of the tool, meaning end of life (you use what you have until it breaks, no support, no nothing afterwards).

    Which is it then ?

  • JonnyMacJonnyMac Posts: 9,158
    edited 2023-04-21 13:57

    The Windows-only Propeller Tool will not get any further development. PNut, which is written by Chip, will continue and can be used as-is, or as a CL tool with an external editor, e.g., with VSC as some do now. Long term, the PNut compiler will be made x-platform. ATM, Chip is suggesting TypeScript. I don't know if that's the best language for an x-platform compiler, so those that have an opinion should chime in with Parallax.

    There are editor choices. I happen to like Propeller Tool and would love it with a few niceties. Knowing that's never going to happen I am grateful to Marco because he has been very responsive to user suggestions (block copy-paste is not quite as nice as in PT, but it's close and all the other features make up for that). The push now is on Parallax to stop single-platform development of software tools and move to an approach that will allow P1 and P2 compilation on any platform.

  • @JonnyMac said:
    ATM, Chip is suggesting TypeScript. I don't know if that's the best language for an x-platform compiler, so those that have an opinion should chime in with Parallax.

    It's a decent option. VSC uses TypeScript for extensions, so it would be easy to have real-time compilation (like SpinTools has).
    Building JS/TS as a standalone application is somewhat eh, either good speed with massive bloat or small executable with slow execution.

  • JonnyMacJonnyMac Posts: 9,158
    edited 2023-04-21 16:13

    ...massive bloat or small executable with slow execution.

    Chip hates that, which is why he still writes the Propeller compilers in x86. He wants small and fast. Am I missing something or would C or C++ be a better choice a CL compiler that can be compiled to work on Windows, Linux, and Mac? What does Eric use for FlexProp? I wonder what Marco is using inside Spin Tools.

  • @JonnyMac said:

    ...massive bloat or small executable with slow execution.

    Chip hates that, which is why he still writes the Propeller compilers in x86. He wants small and fast. Am I missing something or would C or C++ be a better choice a CL compiler that can be compiled to work on Windows, Linux, and Mac? What does Eric use for FlexProp? I wonder what Marco is using inside Spin Tools.

    C is certainly a good choice, if the source doesn't have platform-specific code (as I believe a compiler should not have), it can be compiled for any platform and reused in third-party products with the appropriate bindings (Java for example can link to external libraries with native code, other languages may provide similar interfaces).

    The core FlexProp is C while the UI is TCL/TK if I'm not wrong.

    Spin Tools is entirely Java, compiler included, with native libraries for UI (Eclipse SWT) and serial interface.

  • Wuerfel_21Wuerfel_21 Posts: 5,105
    edited 2023-04-21 19:07

    @JonnyMac said:

    ...massive bloat or small executable with slow execution.

    Chip hates that, which is why he still writes the Propeller compilers in x86. He wants small and fast. Am I missing something or would C or C++ be a better choice a CL compiler that can be compiled to work on Windows, Linux, and Mac? What does Eric use for FlexProp? I wonder what Marco is using inside Spin Tools.

    No, you're not missing anything.

    FlexSpin is C, SpinTools is Java.

    I wouldn't recommend either for a new project. C is an infinite well of tedium and strange bugs and Java has a bloat problem (esp. if you bundle your own runtime, but not as bad as node.js etc) and is kindof a dog to call into from other environments. C++ is C minus some of the tedium (hooray for std::vector!!!! (and awkward silence for std::unordered_map...). There isn't much reason to use C over C++, except that C++ lets you make awful messes in a way C doesn't. I haven't used it much, but the current hype is Rust, which is basically C++ but with strict rules that stop most of the aforementioned C/C++ bugs dead in their tracks (but they also get in your way...).

    Also, this is off-topic, @VonSzarvas please split. --> Kapow ... Done! <--

  • RaymanRayman Posts: 14,745
    edited 2023-04-21 21:17

    It'd be nice if they could open source the part of the Prop Tool code that does the "Block Group Indicators".
    Does @macca 's code have those? It tried to implement with my own spin/spin2 editor, but couldn't get that right...

    Ok, just saw a post saying @macca 's code does the indents (always correctly?)

  • RaymanRayman Posts: 14,745

    BTW: Sorry to hear about PropTool being deprecated, but guess lucky they were able to make it work with Spin2 as it is now.
    VS Code plugin sounds good. Wish they could also do a plugin for regular VS...

  • JonnyMacJonnyMac Posts: 9,158
    edited 2023-04-21 22:35

    Does @macca 's code have those?

    Yes. The lines are a little thin, but I suspect that's an easy fix.

    Ok, just saw a post saying @macca 's code does the indents (always correctly?)

    I've done a bit of testing and haven't noticed any problems. I don't know with certainty, but I think Marco is converting tabs to spaces, especially since Spin Tool has smart tabs by section like Propeller Tool.

    I'm sad that Propeller Tool is ending development before it was really finished, but this may give Parallax the real boost it needs to make the official compiler x-platform. I would also love to see the P1 compiler treated the same way, and, perhaps, even updated a bit to be more compatible with Spin2 standards (that would have to be optional so old code doesn't break).

    From Spin Tools.

  • RaymanRayman Posts: 14,745

    Been a while but I think the issues I had where when the indents became 5 or 6 levels deep..

  • @JonnyMac said:
    I would also love to see the P1 compiler treated the same way, and, perhaps, even updated a bit to be more compatible with Spin2 standards (that would have to be optional so old code doesn't break).

    Remember OpenSpin exists already? Flexspin's P1 bytecode mode is superior though (because I made it, duh) and the Spin frontend does accept a number of Spin2-isms in Spin1 mode. Try it, it might just satiate your needs.

  • No. I am not satisfied that non-Parallax compilers are worth risking my customer projects. I may change my mind, but it won't be any time soon.

  • @Wuerfel_21 said:
    I wouldn't recommend either for a new project. C is an infinite well of tedium and strange bugs and Java has a bloat problem (esp. if you bundle your own runtime, but not as bad as node.js etc) and is kindof a dog to call into from other environments. C++ is C minus some of the tedium (hooray for std::vector!!!! (and awkward silence for std::unordered_map...). There isn't much reason to use C over C++, except that C++ lets you make awful messes in a way C doesn't. I haven't used it much, but the current hype is Rust, which is basically C++ but with strict rules that stop most of the aforementioned C/C++ bugs dead in their tracks (but they also get in your way...).

    I don't like the "hype" in this job. Today is Rust, yesterday was "don't know what", tomorrow another esoteric language that promises to solve all programming issues but doesn't solve anything (except some ghosts in the developer's own mind) because bad code can be written in any language.

    The right tool for the job instead: if I have to write a library that may be used by others, I'll write it in C. A dynamy link library can be easily imported in (almost) any language on any platform with simple wrappers. Can't say so for other, more "modern" languages, unless importing all the bloat needed by that language, or use as a command line-only tool (which still requires all the bloat).

    Other kind of applications have more or less suitable languages, mostly what the developer is more proficent with (myself, I'll write everything in Java for that matter...), with the hope to find other developers familiar with that language in the case the original developer goes away for a reason or the other (this may be very important for "official tools").

  • @Rayman said:
    Ok, just saw a post saying @macca 's code does the indents (always correctly?)

    ...

    Been a while but I think the issues I had where when the indents became 5 or 6 levels deep..

    You tell me:

    Try yourself, if there are cases where the indent lines are not drawn correctly, I'll fix it.

  • pik33pik33 Posts: 2,387

    As far sa I know, the Propeller Tool/Pnut are written in Delphi (?)

    If yes, why not move to Lazarus? It is multiplatform and its programming language is near 100% Delphi compatible. It produces native code for PC - Windows and Linux, Mac and even RPi... or Amiga.
    The x86 assembly code should be rewritten to allow the tool to run on non-x86 based machines.

    Lazarus has a code editor component that may be customized for any programming language. Compiler can be configured and called as an external program, so such a tool may be used for any P2 compiler available... I know about at least 4 of them...

  • RossHRossH Posts: 5,477

    Spin is ok for many purposes, but C is ... well ... just necessary if the Propeller wants to be taken seriously.

  • pik33pik33 Posts: 2,387

    @RossH said:
    Spin is ok for many purposes, but C is ... well ... just necessary if the Propeller wants to be taken seriously.

    Yes, it is. All the people that I tell about a P2 ask me if it can be programmed in C. The good news is - it can. We have at least 2 C compilers available. - FlexC and Catalina. Maybe more.

  • @macca said:
    I don't like the "hype" in this job. Today is Rust, yesterday was "don't know what", tomorrow another esoteric language that promises to solve all programming issues but doesn't solve anything (except some ghosts in the developer's own mind) because bad code can be written in any language.

    That's just not true. The language does have an effect on the average quality of the code written in it. In C you have fifty guns pointed on your feet at all times (see: any std function involving strings, type confusion (what size is a long again? extra fun with int promotions on platforms where int is not 32 bit), struct layouts not actually being consistent between compilers, no pre-supplied data structures, no way to ensure resources aren't leaked, etc, etc, etc). Almost like we learned from our mistakes in the past 50 years. Though I don't think there's a 100% replacement for C specifically yet that's actually good (except C++ of course). There really should be though.

    The right tool for the job instead: if I have to write a library that may be used by others, I'll write it in C. A dynamy link library can be easily imported in (almost) any language on any platform with simple wrappers. Can't say so for other, more "modern" languages, unless importing all the bloat needed by that language, or use as a command line-only tool (which still requires all the bloat).

    You could obviously use C++ here instead, for what that gets you (might need to set some flag to static libc++ if you need it). Rust can also build dynamic or static libraries that conform to C ABI. All the lower-level languages can do it. The only exception is on platforms that actually only have a regular C compiler, which is getting really rare (even on P2 we technically have p2gcc and the LLVM port, though neither is used much AFAICT).

    @macca said:
    Other kind of applications have more or less suitable languages, mostly what the developer is more proficent with (myself, I'll write everything in Java for that matter...), with the hope to find other developers familiar with that language in the case the original developer goes away for a reason or the other (this may be very important for "official tools").

    Mind that I mostly use either C++ (for performance), Java (for GUI) or Ruby (everything else) for my own tool development. The former two are really obnoxious in terms of the language itself, but I have experience with them and they have the tooling to do what I need them to, whereas Ruby is a mostly nice language, but dog-slow (similar to Python) and lacking a really good GUI library. For the kind of tooling I often write, the time saved using a more comfortable language outweighs the CPU time wasted when running the tool.

  • Sorry that this thread went off the tracks, @macca. I do like Spin Tools very much, and hope that you'll consider the feature requests I outlined above, including the ability to work with an external compiler (even if that means not having some of the niceties that your internal compiler offers). Thanks, again, for your efforts on this project.

  • @JonnyMac said:
    Sorry that this thread went off the tracks, @macca. I do like Spin Tools very much, and hope that you'll consider the feature requests I outlined above, including the ability to work with an external compiler (even if that means not having some of the niceties that your internal compiler offers). Thanks, again, for your efforts on this project.

    No problem, your list is on my todo list, including the external compilers support.

  • RaymanRayman Posts: 14,745

    Just downloaded Spin Tools IDE...
    Looks good.
    Also, passes the block group indicators test that my SpinEdit failed...

  • No problem, your list is on my todo list, including the external compilers support.

    Thank you! Grazie!

  • JonnyMacJonnyMac Posts: 9,158
    edited 2023-04-24 17:51

    As they say here in Hollywood during awards season... for your consideration.

    Comment/Uncomment selected lines. Add to Edit menu, right above Format Source. Use hot-key Alt+' or Ctrl+'.

    Logic: If first character in line is not an apostrophe, insert apostrophe at front of line, otherwise if first character of line is apostrophe, delete first character.

    Using the line approach versus curly braces allows a block to be commented out, and then portions selectively uncommented. I guess a corner case as a selection that has some lines commented while others aren't. Following the simple rules would toggle the comments -- which might be useful in testing.

    Thanks for considering.

Sign In or Register to comment.