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

24. Re: Time to finish RedyCode 1.0

ne1uno said...
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

Good point. and interesting checklist. I will keep that in mind. The first stage will be written in euphoria. It will probably be somewhat slow, with the focus being on easy design experimentation and proof of concept. Once the design is settled, i'll figure out how to make it self-hosting.

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

25. Re: Time to finish RedyCode 1.0

ryanj said...
ne1uno said...

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.

Once the design is settled, i'll figure out how to make it self-hosting.

What's your Javascript like? Over the past year or so I've seen a few things that have somewhat downright amazed and astounded me.

Try this: http://bl.ocks.org/mbostock/d1d81455dc21e10f742f (technically open source but not exactly readable)

There is something called asm.js which is making traction, not to say that I personally like it or anything.

And you can make exes and dlls: http://www.phpied.com/make-your-javascript-a-windows-exe/ (but I have no idea whether there is any equivalent on linux)

All I'm saying is that way back when I started Phix I would have ridiculed any suggestion involving Javascript; now I'm not so sure.

Pete

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

26. Re: Time to finish RedyCode 1.0

ryanj said...
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.

I just wonder if "creating a new programming language" "to experiment with some syntax design concepts" could be, well, overkill? You might find that some simpler ideas could solve the issues. Depends what they are.

Multi-tasking - Problems that you might think require multi-tasking to handle might also be solvable using a Finite State Machine. I have one at the core of a multi-user server program. The server itself is single threaded but the FSM can easily process multiple inputs.

GUI development - Have you considered a preprocessor, instead of a full-fledged language, to reform your programs? I see your code has lots of references to routine_id("myfunc"). What if you could simply put @myfunc ? I write lots of utility programs but I never use a WYSIWYG designer. Instead I have my own geometry manager as part of the windows library, eg:

 
LAYOUT = gm:Parse 
  ( { 
	{ RESET, "pos", 20, 30, "dims", 50, 50 }, 
	{ BOOKING, "right", RESET, 10 }, 
	{ REEFER, "right", BOOKING, 10 }, 
	{ DANGER, "right", REEFER, 10}, 
	{ LISTVIEW2, "underleft", RESET, 0, 10, "width", 500, 2000, "height", 200, 1000 } 
 
  } ) 
 

What this does is describe the size & position of controls relative to each other. The controls positions are recomputed with each resize event and the controls are updated accordingly. You're doing something roughly similar in your windows library. But what I really want to do is preprocess this:

 
#LAYOUT [ RESET 20 30 50x50 BOOKING 10 REEFER 10 DANGER 10 LISTVIEW2 underleft RESET 10 width 500-2000 height 200-1000 ] 
 

This little DSL expresses my intentions much better than Euphoria ever could.

Spock

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

27. Re: Time to finish RedyCode 1.0

petelomax said...

And you can make exes and dlls: http://www.phpied.com/make-your-javascript-a-windows-exe/ (but I have no idea whether there is any equivalent on linux)

Yes.

petelomax said...

All I'm saying is that way back when I started Phix I would have ridiculed any suggestion involving Javascript; now I'm not so sure.

I'm using NodeJS on a daily basis now. It is definitely a fine beast.

I'm wanting async in Euphoria, tho. That would be deliciously fast as a server, but I'm not sure it's anymore necessary. NodeJS is fast enough.

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

28. RyanJ's Summer of No Code :-(

I have been so busy working on electronics and other brain work that i haven't had the time or mental energy to work on anything Euphoria-related for many months. But, i will finish version RedyCode 1.0 eventually. It looks like i may be doing lots of euphoria programming in the next few months.

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

Search



Quick Links

User menu

Not signed in.

Misc Menu