Join us on Discord!
You can help CodeWalrus stay online by donating here.

Claw development system, a multiplatform programming platform [multiplatform]

Started by DarkestEx, May 07, 2016, 05:33:29 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Dream of Omnimaga

I hope that timers are supported, so that it is easier to make our games run at the same speed on multiple platforms. :P
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

DarkestEx

Quote from: DJ Omnimaga on July 20, 2016, 03:36:57 AM
I hope that timers are supported, so that it is easier to make our games run at the same speed on multiple platforms. :P
Yes, as I already suggested. But, i don't know yet, if i will add them as instructions or as modules.
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

Dream of Omnimaga

By module, do you mean like a plugin-based language enhancement? I hope it doesn't require the user to download extra dependencies if a Claw game uses such module.
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

DarkestEx

Quote from: DJ Omnimaga on July 20, 2016, 09:47:05 PM
By module, do you mean like a plugin-based language enhancement? I hope it doesn't require the user to download extra dependencies if a Claw game uses such module.
Well Claw can be extended in two ways:

- Embedded modules:
These are modules such as graphics and string manipulation, file system, networking, timing, gpio, spi / i2c, etc. that are hardcoded into the respective Claw port.
These modules can be left out or added when compiling Claw and cannot be added later. Claw will check if all important modules are present before starting and refuse to boot if not.
Modules are often very hardware specific but still use the same functions throughout the different hardware.

- Included libraries:
Claw supports compiling executables as libraries that can be used by games and programs on (any) platform. All hardware specific code is done in the modules
and therefore libraries can be hardware independant.
But again, modules have to be present and the library cannot use more bits per value than the platform it runs on can offer.
These libraries are loaded at run time by calling a special instruction and can even be unloaded.
This way Claw allows launching other games and libraries from others. There are also planned permissions that rely on the hardware modules.

Libraries can be downloaded or are already included with the game. They can be shared between different games and should be as version independant as possible.
They can also be downloaded.
Modules however have to be built right into Claw. Claw is made modular, so adding or porting existing modules is going to be easy. Adding modules requires recompiling Claw.

I am also working on a website for Claw that will be used to download firmware upgrades, learn the language and very likely will offer an online compilation service.
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

Dream of Omnimaga

My only concern about an online compiler is that if there is no way to compile your programs offline, then what do we do if your website shuts down in a few years? We lost many TI/non-TI tools in the past because of webmasters moving on in real life with kids and different hobbies, forgetting to renew their domain name and to pay their hosting bills in the process. One prime example is Vidéoway emulation (see the other thread).

So my suggestion would be to make that part of Claw also open-source, with a license that allows anyone to re-host a copy of the tutorials and compiler if the original copy ever disappears completely.

Thanks for explaining modules. Just make sure that it isn't a major hassle to compile Claw programs for multiple platforms at a time (eg not require changing most of the graphics code for each platform)
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

DarkestEx

Quote from: DJ Omnimaga on July 21, 2016, 03:16:59 PM
My only concern about an online compiler is that if there is no way to compile your programs offline, then what do we do if your website shuts down in a few years? We lost many TI/non-TI tools in the past because of webmasters moving on in real life with kids and different hobbies, forgetting to renew their domain name and to pay their hosting bills in the process. One prime example is Vidéoway emulation (see the other thread).

So my suggestion would be to make that part of Claw also open-source, with a license that allows anyone to re-host a copy of the tutorials and compiler if the original copy ever disappears completely.

Thanks for explaining modules. Just make sure that it isn't a major hassle to compile Claw programs for multiple platforms at a time (eg not require changing most of the graphics code for each platform)
Well as said, i am not really sure if I make a web version. If I do it will just be additional to the offline compiler and would be a total rewrite in PHP.
I am probably not going to do it and focus on the offline compiler written in rust.
But, if @Streetwalrus or @Juju would host the Claw online compiler that is going to be written I rust on the CW server, then we will also have an online one too.
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

Dream of Omnimaga

Oh ok phew. I feared you wanted to make it online-only. Another thing I didn't think about in my previous post that would have been a second issue is that certain people either don't have any internet access or are behind parental filters that blocks every site.

I guess if an online compiler is done then we could maybe host it. It would just need not to be too demanding resources-wise, as our VPS only has 1 GB of RAM and a single-core CPU (although we're moving to a 2 GB RAM cloud VPS in the near future)
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

novenary

If it's not too much trouble for us to maintain, we'll consider it.

Dream of Omnimaga

You could always give him a bit of disk space but you would need to make sure the php script cannot hinder the rest of the server's performance if it contains bugs or during extensive use (for example if someone compiles over and over while debugging, which is very common).
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

DarkestEx

Quote from: DJ Omnimaga on July 22, 2016, 01:14:17 AM
You could always give him a bit of disk space but you would need to make sure the php script cannot hinder the rest of the server's performance if it contains bugs or during extensive use (for example if someone compiles over and over while debugging, which is very common).
It's not going to be PHP but a compiled linux program. Otherwise I would host it on my site.
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

novenary

Quote from: DJ Omnimaga on July 22, 2016, 01:14:17 AM
You could always give him a bit of disk space but you would need to make sure the php script cannot hinder the rest of the server's performance if it contains bugs or during extensive use (for example if someone compiles over and over while debugging, which is very common).
If needed, Linux has the necessary facilities to control resource usage and process priorities.

DarkestEx

Quote from: Streetwalrus on July 22, 2016, 02:11:35 PM
Quote from: DJ Omnimaga on July 22, 2016, 01:14:17 AM
You could always give him a bit of disk space but you would need to make sure the php script cannot hinder the rest of the server's performance if it contains bugs or during extensive use (for example if someone compiles over and over while debugging, which is very common).
If needed, Linux has the necessary facilities to control resource usage and process priorities.
Yes, but I was planning to write a PHP wrapper for the linux exectuable. Also all data will be stored on my server.
I was planning to host the online IDE and stuff on my server and on your server there would be the standard compiler executable that is called and processed by a PHP script. The php script gets called by the application on my server and is not accessible to the user. Also the php on the cw server would be password protected and could only be accessed by my server which does rate limiting and everything else so load on your side is going to be low.
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

novenary

You don't need PHP at all. Build your application using some RESTful framework instead.

DarkestEx

Quote from: Streetwalrus on July 22, 2016, 10:01:12 PM
You don't need PHP at all. Build your application using some RESTful framework instead.
Well I want to use GET requests to get the bytecode back from your server. I will POST data over to your servers from my PHP backend. I really don't care what runs on your side, but my compiler will be a native application that I would like to run. It would just take the code from stdin and output the errors to stderr and the output code to stdout. There is no temporary storage required on your servers at all, just a little RAM while streaming the data out.
That would be my plan.
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

Dream of Omnimaga

Quote from: DarkestEx on July 22, 2016, 05:49:50 AM
Quote from: DJ Omnimaga on July 22, 2016, 01:14:17 AM
You could always give him a bit of disk space but you would need to make sure the php script cannot hinder the rest of the server's performance if it contains bugs or during extensive use (for example if someone compiles over and over while debugging, which is very common).
It's not going to be PHP but a compiled linux program. Otherwise I would host it on my site.
Ah ok I wasn't sure, because some people tend to release their programs as PHP and require the user to install Apache locally in order to run it or stuff like that, which can be an hassle.
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

Powered by EzPortal