1. RedyCode 1.0 behind schedule
- Posted by ryanj Dec 06, 2016
- 3773 views
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.
2. Time to finish RedyCode 1.0
- Posted by ryanj Jan 29, 2017
- 3640 views
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.
- 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!
3. Re: Time to finish RedyCode 1.0
- Posted by Icy_Viking Jan 30, 2017
- 3587 views
Very nice to see progress being made on Redy. I look forward to seeing the final result.
4. Re: Time to finish RedyCode 1.0
- Posted by ChrisB (moderator) Jan 30, 2017
- 3565 views
Hi Ryan
Will it be closed or open? (guess where I'm going with this)
Cheers
Chris
5. Re: Time to finish RedyCode 1.0
- Posted by ryanj Jan 30, 2017
- 3527 views
Hi Ryan
Will it be closed or open? (guess where I'm going with this)
Cheers
Chris
Open source, Apache License, Version 2.0.
6. Re: Time to finish RedyCode 1.0
- Posted by ryanj Jan 30, 2017
- 3505 views
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.
7. Re: Time to finish RedyCode 1.0
- Posted by Icy_Viking Jan 31, 2017
- 3554 views
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.
All in all, sounds pretty good. I'll probably give it a shot once it gets released. Keep up the good work.
8. Re: Time to finish RedyCode 1.0
- Posted by petelomax Jan 31, 2017
- 3680 views
- I would like to get RedyCode working with Phix, too.
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
9. Re: Time to finish RedyCode 1.0
- Posted by ChrisB (moderator) Jan 31, 2017
- 3513 views
Hi
An interesting challenge then.
Cheers
Chris
10. Re: Time to finish RedyCode 1.0
- Posted by ryanj Apr 14, 2017
- 3279 views
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!
11. Re: Time to finish RedyCode 1.0
- Posted by ryanj May 12, 2017
- 3074 views
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.
12. Re: Time to finish RedyCode 1.0
- Posted by petelomax May 12, 2017
- 3077 views
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
Pete
13. Re: Time to finish RedyCode 1.0
- Posted by irv May 13, 2017
- 3096 views
"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!
14. Re: Time to finish RedyCode 1.0
- Posted by ryanj May 13, 2017
- 3037 views
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
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.
15. Re: Time to finish RedyCode 1.0
- Posted by jmduro May 13, 2017
- 3069 views
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.
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
16. Re: Time to finish RedyCode 1.0
- Posted by ryanj May 13, 2017
- 3057 views
"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:
- 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.
- Euphoria 4.x syntax
- 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:
- The C-like language allows for much easier access to dlls and fast low-level code
- Euphoria programs could be run as dynamically-loaded scripts or plugins within an exe or dll.
- 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.
17. Re: Time to finish RedyCode 1.0
- Posted by jmduro May 13, 2017
- 2985 views
duro@debian-32:~/Téléchargements/qu/demo$ qu hello.qu @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ @@ @@ @@ @@ @@@@@@ @@ @@ @@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@@@@@ @@@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@@@@ @@@@@@ @@@@@@ @@@@@ @@ @@ @@ @@ @@ @@ @@@@@ @@@@@@ @@ @@@@@@ @@ @@ @@ @ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@ @@@@@@ @@ @@ @@ @@ @@ @@@ @@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@@@ @@ @@ @@@@@@ @@@@@@ @@ @@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Yes, we can!
Jean-Marc
18. Re: Time to finish RedyCode 1.0
- Posted by irv May 13, 2017
- 3029 views
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?
19. Re: Time to finish RedyCode 1.0
- Posted by jmduro May 13, 2017
- 2994 views
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
20. Re: Time to finish RedyCode 1.0
- Posted by jmduro May 13, 2017
- 3014 views
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
21. Re: Time to finish RedyCode 1.0
- Posted by jmduro May 13, 2017
- 2995 views
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
22. Re: Time to finish RedyCode 1.0
- Posted by acEduardo May 22, 2017
- 2948 views
I'd remembered the Lua VM: http://files.catwell.info/misc/mirror/lua-5.2-bytecode-vm-dirk-laurie/lua52vm.html
23. Re: Time to finish RedyCode 1.0
- Posted by ne1uno May 29, 2017
- 2830 views
... 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.
24. Re: Time to finish RedyCode 1.0
- Posted by ryanj May 29, 2017
- 2824 views
... 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.
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.
25. Re: Time to finish RedyCode 1.0
- Posted by petelomax May 30, 2017
- 2781 views
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
26. Re: Time to finish RedyCode 1.0
- Posted by Spock Jun 23, 2017
- 2481 views
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
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
27. Re: Time to finish RedyCode 1.0
- Posted by euphoric (admin) Jul 18, 2017
- 2433 views
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.
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.
28. RyanJ's Summer of No Code :-(
- Posted by ryanj Sep 26, 2017
- 1985 views
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.