Catalina 3.13.2 - smaller and faster, better IDE
RossH
Posts: 5,462
All,
I've just posted the latest release of Catalina (3.13.2) to SourceForge. I've posted the usual Windows "one touch" installer (here). Linux versions of release 3.13.2 are also now available. For OSX, download one of the linux packages and compile from source.
There are no functional changes in release 3.13. The main reason for the release is that I found some more instances of code that failed to compile when using Catalina's new open source Spin compiler (spinnaker, based on openspin). Other than that, the changes in 3.13 are all to do with performance and code size optimizations, which are significant enough to warrant a new release.
Here is a brief list of the main improvements in 3.13. For a full list, see the README.WhatsNew file (attached) or the Catalina Reference Manual:
Here is a brief list of the main improvements in 3.13.2. For a full list, see the README.WhatsNew file (attached) or the Catalina Reference Manual:
Ross.
** While there are no XMM-specific kernel enhancements in this release, XMM program performance is improved by the additional code size reduction that the optimization level 5 can achieve.
I've just posted the latest release of Catalina (3.13.2) to SourceForge. I've posted the usual Windows "one touch" installer (here). Linux versions of release 3.13.2 are also now available. For OSX, download one of the linux packages and compile from source.
There are no functional changes in release 3.13. The main reason for the release is that I found some more instances of code that failed to compile when using Catalina's new open source Spin compiler (spinnaker, based on openspin). Other than that, the changes in 3.13 are all to do with performance and code size optimizations, which are significant enough to warrant a new release.
Here is a brief list of the main improvements in 3.13. For a full list, see the README.WhatsNew file (attached) or the Catalina Reference Manual:
- Fixed a problem with the graphics library that caused it to fail to compile when spinnaker (aka openspin) was used (programs would compile correctly if homespun was used). Hopefully, these are the last such instances!
- Various performance enhancements in both the LMM and CMM kernels, resulting in speed improvements of up to 20%.
- The CMM version of the optimizer has been much enhanced, resulting in significantly smaller code sizes for CMM programs.
- Added a new Optimizer level (level 5) which can now reduce code size by up to 20% for all program types (CMM, LMM or XMM). **
Here is a brief list of the main improvements in 3.13.2. For a full list, see the README.WhatsNew file (attached) or the Catalina Reference Manual:
- Upgraded Code::Blocks to the latest released version (13.12). This new release has many bug fixes and improvements (see Code::Blocks documentation for details).
- Improved Catalina Project Wizard - the wizard now accepts the most commonly used configuration options, and provides a simpler method of creating Code::Blocks projects from scratch. The wizard also now knows about .eeprom and .binary ouput formats, so Code::Blocks can correctly detect wheher a project rebuild is required.
- Improved Catalina Compiler support - Code::Blocks now checks Catalina options as you select them, and warns you if you select incompatible ones.
- Improvements to the Code::Blocks installation process - Catalina now sets the Code::Blocks search paths correctly, so that the Code::Blocks context sensitive editor features work without any adiditonal configuration.
- All the significant Catalina demo programs are now included in various Code::Blocks example workspaces.
Ross.
** While there are no XMM-specific kernel enhancements in this release, XMM program performance is improved by the additional code size reduction that the optimization level 5 can achieve.
Comments
Attached is a new version of the Catalina target package for Catalina 3.13.2 that enables executing XMM code from EEPROM. This should work on any Propeller with an EEPROM larger than 32kb. I have tested it on my Hydra, QuickStart and C3 boards. I have defined a new symbol (XEPROM) to enable this mode, and you can use the existing EEPROM loader (for payload) to load the binary into EEPROM.
XEPROM mode only works with the SMALL memory mode, and also requires CACHED, so here is an example of compiling and loading an XMM program to execute from EEPROM on the QuickStart board:
The same should work on any other board (replace QUICKSTART with your platform name).
Ross.
Previous notes:
Attached is a slightly improved version of payload (source code and windows binary) that allows you to override the default terminal size (80x24) to be used in interactive mode. You can do this in two ways:
- Set the environmnet variables PAYLOAD_ROWS and PAYLOAD_COLS
- Use the command-line option -g. This will override any environment variables.
For example, these commands: will do the same as this command:There are no other changes. This version will also be included in the next release.
Ross.
In response to an email question - yes, the code size and performance reductions (up to 20%) also apply to XMM programs.
I'll update the top post to make this clear.
Ross,
Why would you want to do such a strange thing?
Presumably Ross has a down load site for the sources or they are in repository you can access.
Since I am fighting with OpenSpin also can you maybe elaborate where the differences between OpenSpin and Homespun are (besides@@@)?
I am stumbling about things like local pasm labels not working if to short? (aka :bit1 works :bit does not?)
Enjoy!
Mike
That PASM local labels problem, ":bit" vs ":bit1", only shows with openspin compiled to JS with Emscripten. Using openspin natively on my Linux box does not have that problem. Have you tried compiling FullDuplex3Port with a Linux oe Windows openspin?
All Catalina sources are always in all distributions. I should finish at least one of the Linux builds within a day or so.
Ross.
Sorry for guessing.
Of course Catalina is available on sourceforge. And you are right the is no 3.13 package for Linux.
My guess was that you could actually be able to checkout the source code from a source code repository there. Like github. After all it is called "SourceForge". So far I see no way to do that.
So Ross, how doe we check out Catalina from the source code repo?
By the way, the source directory of the 3.12 tar ball is totally corrupt and unreadable under Linux.
Also it's miserable that when you un tar it, it splatters files and directories all over the place rather than in a single catalina-3.12 subdirectory as is normally expected.
Why do they call it "sourceforge"? This is not the first time I have been unable to find a project repo there. In fact I have never found one.
Heater seems to have answered the local label question - as far as I know these work identically under both.
The main differences between OpenSpin and Homespun that I have found are:
- How the different preprocessors handle symbols that are "#defined" but assigned no value. Homespun does not use such symbols in macro substitutions (only in "#ifdef ... #elseifdef ... #endif" type constructs). Openspin does (it defines such symbols to have the value 1) and this leads to some very hard to find bugs, so in spinnaker (my version of openspin) I made the alternate semantics behave the same way as Homespun did.
- Some calculations with addresses don't work under Openspin, since it assumes you are talking about cog addresses and claims the address is out of range (when in fact with LMM they represent hub addresses, and are not out of range at all). The answer is to not to perform calculations on the labels themselves - this worked under homespun, but it does not under openspin. For instance say "(@addr1 - @addr2)/4" instead of just "(addr - addr2)".
If you find any more, please let me know!Ross.
I just use sourceforge like a public "dropbox" - there is no public SVN repository for Catalina, the entire source is always included in each release. I keep meaning to set one up (it's been on my list of "things to do" for a while - the trouble with this list is that I never seem to get past the first couple of items :frown:).
Ross.
The Windows distro link (http://sourceforge.net/projects/catalina-c/files/releases/3.13/Catalina_3.13_Setup.exe/download) seems to be missing the header files, if I'm not mistaken. I get errors trying to build on Mac OS as it can't find spinach and other .h files. I copied-over versions of the headers from my previous Catalina sources and that help to get 3.13 to build.
dgately
Which header files? Spinach? I don't know what that is (other than what Popeye eats, of course!).
The header files that should be part of Catalina all seem to be there. If it is standard C/C++ header files then you may need to check your installation of gcc.
Note that you will need to modify various Catalina makefiles if you are compiling it somewhere other than /usr/local/lib/catalina.
Here is a list of the files you need to modify:
source/lcc/custom.mk
source/lcc/makefile
source/lcc/use_lcc
source/lib/Makefile
source/lib/build_all
source/srecord/build_all
Ross.
Gee I love auto spell-checkers...
I meant "spinc.h". Does the Windows .exe install the files? I guess I'll need to run that n VMWare to get all the files...
dgately
Hi dgately,
The file spinc.h is correctly installed in the directory /source/catalina by Catalina_3.13_Setup.exe. The only thing I can think of is that whatever utility you used to extract the sources from this file under OSX has some problem. So there may well be other files that you are missing.
I'll try and release a proper Linux release on the weekend (if not before).
Ross.
The "tar .xvzf catalina_3.12_Linux32.tgz" end with:
Then we get: Ok let's try that as root:
Hmm..All the source sub directories are empty.
Really? Try this instead ...
Ross.
Untaring random tarballs off the net as root is a really bad idea.
As it is that tarball craps all over files in whatever directory you unpack it in, which is not polite to say the least.
Untar it into an empty subdirectory if you're concerned. That's generally good advice for using tar anyway.
And if you are paranoid about executing tar as root, you can use pax instead:
However, you will probably still need to have root permission to install the results in /usr/local/lib/catalina, which is where Catalina expects to be installed.
Ross.
Cool. Never heard of pax before. Not sure yet how it helps here.
Installing to /usr/local/lib is OK. If I trust you:) Or if I have read what the installer does first.
I personally prefer to have such things go into /opt or better yet be be able to use them from my home directory.
pax is a posix utility. It unpacks files in archives without trying to restore the original file attributes (unless you tell it to do so).
So you can run it as an ordinary user to extract files that would require root permission if tar was used.
Ross.
Just like the Windows version, you can actually install the Linux version of Catalina anywhere - just set the LCCDIR environment variable appropriately.
But if it is not installed in the default location (/usr/local/lib/catalina), you will need to modify some make files and batch scripts to rebuild it from source.
Ross.
A few tweaks to get the thing built from source and installed where I like is OK.
I'll change the install instructions to recommend the use of pax for the next release.
Ross.
It just is a directory permission error... many directories have an unset x-bit.
When this gets fixed, every user can unroll that tarball...
I can fix the directory permissions in the next release, but pax will fix the problem for all past releases as well (and for future releases if the the same problem occurs again). Of course, so would using tar as root, but I can see Heater's point that some Linux users might object to that.
Ross.