1. RedyCode 1.0 behind schedule

Unfortunately, RedyCode will not be redy on time. I have been so busy with Propeller micro-controller programming and research, i haven't done any Euphoria programming at all in the last 2 months. My plans haven't changed at all, just postponed.

new topic     » topic index » view message » categorize

2. Time to finish RedyCode 1.0

I'm finally back to work on RedyCode. Here's a quick review of where i left off and what needs to be done for the 1.0 release:

Significant features that have been finished:

  • Pure euphoria GUI that is stable and efficient. Window positions are remembered automatically. When bound or compiled, startup time is very fast. Memory and cpu usage is very low.
  • Project system that helps you organize your source code, documentation, and other needed files. Built-in bmp image viewer and creole-like formatted text editor.
  • Source tree to easily browse project source files and include files. Files outside the project are opened in read-only mode by default to protect against accidental edits.
  • Syntax-highlighting text editor with line numbers, wordwrap, bookmarks, and support for several types of syntax.
  • A section of text can be edited in a separate window. When the window is closed, the original text is updated.
  • Unique navigation design that shows lists of information to make it easy to jump to routines, bookmarks, and search results at any time.
  • Compatible with eu 4.0.5 and 4.1.0 beta (32-bit only). As far as i know, it runs on any version of windows (XP or newer) and on WINE.
  • Portable (can be run off a flash drive, for example) and automatically works with your default euphoria installation or can have euphoria bundled with it.
  • Programs can be run directly from RedyCode with crash report support.
  • Clipboard history and saved clips that can be easily pasted one or more at a time. Clips can be combined or split apart by newline characters.
  • Unique Euphoria build system that makes it easy to set build options and preview the build script, manifest, and resource file. You can clearly see what it is going to do and exactly what files are going to be used before you click Build.

What needs to be finished:

  • Add undo/redo engine
  • Add ability to save/load universal clips and per-project clips.
  • Improve hotkeys and toolbar customization
  • Fix some syntax-highlighting and creole formatting issues
  • Possibly add auto-complete features
  • Allow GUI font size adjustments
  • Improve dark GUI color scheme
  • Improve the toolbar icon set
  • Add import/export/backup/restore features to project manager
  • Add project template editor (Use an existing project to create a project template)
  • Fix a few issues with project settings. Add ability to remember bookmarks, clips, and currently open files when a project is closed.
  • Optimize word wrap. It is really slow on large files. sad
  • Write documentation, demo projects, and templates
  • Beta test
  • Update website with much better screenshots and information

I am guessing this will probably be done in about 3-4 months. It is exciting to think that after all these years, it is so close to being version 1.0!

new topic     » goto parent     » topic index » view message » categorize

3. Re: Time to finish RedyCode 1.0

Very nice to see progress being made on Redy. I look forward to seeing the final result.

new topic     » goto parent     » topic index » view message » categorize

4. Re: Time to finish RedyCode 1.0

Hi Ryan

Will it be closed or open? (guess where I'm going with this)

Cheers

Chris

new topic     » goto parent     » topic index » view message » categorize

5. Re: Time to finish RedyCode 1.0

ChrisB said...

Hi Ryan

Will it be closed or open? (guess where I'm going with this)

Cheers

Chris

Open source, Apache License, Version 2.0.

new topic     » goto parent     » topic index » view message » categorize

6. Re: Time to finish RedyCode 1.0

Icy_Viking said...

Very nice to see progress being made on Redy. I look forward to seeing the final result.

I forgot to mention a few things:

  • The focus of RedyCode 1.0 is to be a generic Euphoria IDE. It has a few extra features for RedyLib-based projects, but RedyLib is not required for your projects.
  • RedyLib itself will not be "officially supported" in version 1.0. I'm happy to answer any specific questions you have if you decide to try it. But i just don't have the time to write complete documentation and demos. Besides, i plan to make significant changes to the GUI API later this year.
  • RedyLib and the RedyCode source will probably be bundled together as a separate download from the official RedyCode 1.0.0 final release.
  • I would like to get RedyCode working with Phix, too. smile
new topic     » goto parent     » topic index » view message » categorize

7. Re: Time to finish RedyCode 1.0

ryanj said...
Icy_Viking said...

Very nice to see progress being made on Redy. I look forward to seeing the final result.

I forgot to mention a few things:

  • The focus of RedyCode 1.0 is to be a generic Euphoria IDE. It has a few extra features for RedyLib-based projects, but RedyLib is not required for your projects.
  • RedyLib itself will not be "officially supported" in version 1.0. I'm happy to answer any specific questions you have if you decide to try it. But i just don't have the time to write complete documentation and demos. Besides, i plan to make significant changes to the GUI API later this year.
  • RedyLib and the RedyCode source will probably be bundled together as a separate download from the official RedyCode 1.0.0 final release.
  • I would like to get RedyCode working with Phix, too. smile

All in all, sounds pretty good. I'll probably give it a shot once it gets released. Keep up the good work.

new topic     » goto parent     » topic index » view message » categorize

8. Re: Time to finish RedyCode 1.0

ryanj said...
  • I would like to get RedyCode working with Phix, too. smile

I should warn you that is not likely to be trivial. Some quick tips follow.
First you will need to hide /std from Phix (but not OE), eg

--/* 
include std/dll.e 
include std/machine.e 
--*/ 

There is no way Phix can support all of std/, the best I can do is extract individual routines one at a time, as needed.
Of course all the ones that get used the most often have already been done.

Second, you'll need a bodged euphoria/info.e, specifically

--/**/constant version_info = {0,0,0,0,0,0,"unknown",0} --/* 
constant version_info = machine_func(M_EU_INFO, {}) --*/ 

and

global function arch_bits() 
--/**/  return sprintf( "%d-bit", machine_bits() )  --/* 
        return sprintf( "%d-bit", 8 * sizeof( C_POINTER ) ) --*/ 
end function 

Thirdly, you will probably need a fair bit of sequence-op stuff such as

--/**/  plblpos = sq_add(wrect[1..2],wcprops[wcpLabelPos][idx])     --/* 
        plblpos = wrect[1..2] + wcprops[wcpLabelPos][idx]           --*/ 

Lastly, Phix has recently (possibly temporarily) ditched "without warning".
To avoid warnings on implicit forward calls, make them explicit.
Just copy the declaration line higher up, prefixed with forward, eg:

forward procedure update_var(string name) 
... 
      update_var(xxx) 
... 
procedure update_var(string name) 
end procedure 

The recent experience with Judith's IDE on Phix went much more smoothly than I expect RedyCode will, because it was all 3.0-compatible code (and no std/).

Pete

new topic     » goto parent     » topic index » view message » categorize

9. Re: Time to finish RedyCode 1.0

Hi

An interesting challenge then.

Cheers

Chris

new topic     » goto parent     » topic index » view message » categorize

10. Re: Time to finish RedyCode 1.0

The Undo feature works now! I would release an update, but there are a few unrelated bugs i want to fix first. I will probably release an update in a few days, and a few more updates in the next few weeks. I am trying to finish some new features as soon as possible. There will be noticeable improvements to RedyCode, so stay tuned for more updates!

new topic     » goto parent     » topic index » view message » categorize

11. Re: Time to finish RedyCode 1.0

I'm still behind schedule...but i'm getting pretty close to being finished. I'm doing a feature freeze for v1.0. I just need to fix a few known bugs, then rewrite the help documents. I'll probably release one last beta version in a few days, then release candidate(s), then the final version.

After RedyCode 1.0, i may not update it for awhile because i will be working on a new project: creating a new programming language based on Euphoria syntax.

new topic     » goto parent     » topic index » view message » categorize

12. Re: Time to finish RedyCode 1.0

ryanj said...

a new project: creating a new programming language based on Euphoria syntax.

Why?

Will it run on Windows, Linux, Android and iOS?

Will it run on x86 and ARM?

Will it run on a web page?

Will version 0.0.1 pre-alpha run on Android and iOS and on a web page?

Unless you can confidently say yes to all the above my advice (after 12 years and still counting) has to be don't start cry

Pete

new topic     » goto parent     » topic index » view message » categorize

13. Re: Time to finish RedyCode 1.0

"Why" is a good question.

If your reason for writing a new programming language is fame - forget it. You'll never beat the number of users of Qu (a language similar to Euphoria, but with real objects) - even though it works very well, there are between zero and one people using it, AFAIK.

https://en.wikipedia.org/wiki/Qu_(programming_language)

(Oh... if you meant fame for having the largest number of users, I think you can forget that.)

If your reasoning is:

  • you are dissatisfied with some features of Euphoria,
  • and you know enough about programming to be able to write a new language

then wouldn't your time be better spent (and more appreciated) if you used those talents to fix Eu?

If you want to write something that would actually be used by more than a handful of people, maybe you should try to get Eu (with GUI and IDE) to run on non-rooted Android devices, they're everywhere!

new topic     » goto parent     » topic index » view message » categorize

14. Re: Time to finish RedyCode 1.0

petelomax said...
ryanj said...

a new project: creating a new programming language based on Euphoria syntax.

Why?

Will it run on Windows, Linux, Android and iOS?

Will it run on x86 and ARM?

Will it run on a web page?

Will version 0.0.1 pre-alpha run on Android and iOS and on a web page?

Unless you can confidently say yes to all the above my advice (after 12 years and still counting) has to be don't start cry

Pete

I don't know yet. I plan to start by writing a proof-of-concept interpreter in Euphoria and/or Phix. After that, a new backend could be written in whatever fast compiled language. Hopefully, it would be able to compile on various platforms. The main goal for now is to experiment with some syntax design concepts that could make, scripting, multi-tasking, and GUI development easier.

new topic     » goto parent     » topic index » view message » categorize

15. Re: Time to finish RedyCode 1.0

irv said...

You'll never beat the number of users of Qu (a language similar to Euphoria, but with real objects) - even though it works very well, there are between zero and one people using it, AFAIK.

https://en.wikipedia.org/wiki/Qu_(programming_language)

Hi Irv,

Do you remember what is needed to compile Qu? I get this error which seems to indicate some missing library when I run make: "error: unknown type name ‘wint_t’".

Regards

Jean-Marc

new topic     » goto parent     » topic index » view message » categorize

16. Re: Time to finish RedyCode 1.0

irv said...

"Why" is a good question.

If your reason for writing a new programming language is fame - forget it. You'll never beat the number of users of Qu (a language similar to Euphoria, but with real objects) - even though it works very well, there are between zero and one people using it, AFAIK.

https://en.wikipedia.org/wiki/Qu_(programming_language)

(Oh... if you meant fame for having the largest number of users, I think you can forget that.)

If your reasoning is:

  • you are dissatisfied with some features of Euphoria,
  • and you know enough about programming to be able to write a new language

then wouldn't your time be better spent (and more appreciated) if you used those talents to fix Eu?

If you want to write something that would actually be used by more than a handful of people, maybe you should try to get Eu (with GUI and IDE) to run on non-rooted Android devices, they're everywhere!

I have thought about being an active euphoria developer, but every time i tried to look at the source code, i got totally lost. I considered just forcing myself to stare at it until it started to sink in. But, in the last year or two, while working on RedyCode, i have begun to realize how difficult it is to do certain things in Euphoria. What the Redy project really needs is beyond the current abilities of Euphoria.

After lots of consideration, i came up with an idea that could let me create a new language that does what i need, while at the same time, possibly contribute to the development of Euphoria.

The basic concept is this: have 3 types of syntax:

  1. A low-level C-like language that is similar to euphoria, but uses C data types, pointers, structures, etc. It can be directly converted to C and compiled by GCC.
  2. Euphoria 4.x syntax
  3. A new experimental Eu-like syntax based on euphoria, but not totally compatible

The frontend and backend would first be written in Euphoria as a proof-of-concept. Then, a faster backend could be written in the C-like language so it can build itself. Part of the backend would be a euphoria IL interpreter, and part would be a Eu-like interpreter. The interpreters could run multiple programs, each in it's own thread, and a data sharing mechanism would let them communicate with each other. A program could have sections of code written in any combination of the three syntax modes, but only the C-like code would actually be compiled. The Eu and Eu-like code would be interpreted within the compiled program.

This design could open up some new possibilities:

  1. The C-like language allows for much easier access to dlls and fast low-level code
  2. Euphoria programs could be run as dynamically-loaded scripts or plugins within an exe or dll.
  3. The Eu-like language could do interesting things that euphoria currently cannot do

Now that RedyCode is working, i'll be able to experiment with this new language design within the RedyCode, and adapt RedyCode to become the IDE for this new language.

new topic     » goto parent     » topic index » view message » categorize

17. Re: Time to finish RedyCode 1.0

duro@debian-32:~/Téléchargements/qu/demo$ qu hello.qu  
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
@@                                                @@ 
@@    @@   @@  @@@@@@  @@      @@       @@@@@     @@ 
@@    @@   @@  @@      @@      @@      @@   @@    @@ 
@@    @@@@@@@  @@@@@@  @@      @@      @@   @@    @@ 
@@    @@   @@  @@      @@      @@      @@   @@    @@ 
@@    @@   @@  @@@@@@  @@@@@@  @@@@@@   @@@@@     @@ 
@@                                                @@ 
@@  @@     @@   @@@@@   @@@@@@   @@      @@@@@@   @@ 
@@  @@  @  @@  @@   @@  @@   @@  @@      @@   @@  @@ 
@@  @@ @@@ @@  @@   @@  @@@@@@   @@      @@   @@  @@ 
@@   @@@ @@@   @@   @@  @@   @@  @@      @@   @@  @@ 
@@   @@   @@    @@@@@   @@   @@  @@@@@@  @@@@@@   @@ 
@@                                                @@ 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 

Yes, we can!

Jean-Marc

new topic     » goto parent     » topic index » view message » categorize

18. Re: Time to finish RedyCode 1.0

jmduro said...

Do you remember what is needed to compile Qu? I get this error which seems to indicate some missing library when I run make: "error: unknown type name ‘wint_t’".

Regards

Jean-Marc

No. I get the same error. Possibly something to do with 64-vs-32 bit platforms. But, as usual, the info on the web re wint_t just confuses me.

EDIT: I see you got it working. What to do?

new topic     » goto parent     » topic index » view message » categorize

19. Re: Time to finish RedyCode 1.0

I just put the definition of win_t at the beginning of include/Utf8.h

typedef unsigned int wint_t; 

I still can't use any socket-related function. Il get an error:

duro@debian-32:~/Téléchargements/qu/demo$ qu socket.qu 
/home/duro/Téléchargements/qu/demo/socket.qu 
[-1218799872] Qu.compile_main (ESystem) /opt/qu/lib/Socket line 8: OpenSSL is not available near Ssl 

libssl-dev is installed (Debian 8 32-bit). I don't know what is missing.

Jean-Marc
Forked into: Qu programming Language

new topic     » goto parent     » topic index » view message » categorize

20. Re: Time to finish RedyCode 1.0

If I had the skills to do the job, I would have tried to improve Euphoria 3.11 because its C source code has far less lines than the one of OpenEuphoria. I would have reduced C source code to the shortest size possible to have a minimal core. It is probably already built that way. Maybe it could be even simpler with some entry points removed (calls to internal routines), even if this lowers performance. Companion libraries would have been written in Euphoria, calling Windows or Linux DLLs when needed to stay with short-sized executables.

Jean-Marc

new topic     » goto parent     » topic index » view message » categorize

21. Re: Time to finish RedyCode 1.0

Maybe what I'm thinking of is total nonsense but I think that most of cases in following routine of be_machine.c could be externalized reducing C source code size:

object machine(object opcode, object x) 
/* Machine-specific function "machine". It is passed an opcode and  
   a general Euphoria object as its parameters and it returns a  
   Euphoria object as a result. */ 

Jean-Marc

new topic     » goto parent     » topic index » view message » categorize

22. Re: Time to finish RedyCode 1.0

I'd remembered the Lua VM: http://files.catwell.info/misc/mirror/lua-5.2-bytecode-vm-dirk-laurie/lua52vm.html

new topic     » goto parent     » topic index » view message » categorize

23. Re: Time to finish RedyCode 1.0

ryanj said...

... i will be working on a new project: creating a new programming language based on Euphoria syntax.

make sure it is able to self host. that is, it should be written as much as possible in it's own language or a restricted subset which is easily buildable with existing tools.

a large percentage of real or imagined euphoria problems are related to interfacing with other languages and libraries and the difficulty of the euphoria building and maintaining. adding new users might boil down to how fast they think your language can solve their problems on their terms.

http://colinm.org/language_checklist.html

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu