Jump to content

The open source programming language Perseus - Wanna join the project?


Recommended Posts

Hi there!

I'm looking for some team members for a bigger software project, namely Perseus ( https://github.com/Perseus-Dev/Perseus-6 ).

Your profile:

  • You have fun programming,
  • you are proficient in AutoIt and you have touched VB.NET (or VBS) at some point,
  • you are interested in compiler development and the inner workings of programming languages, but you don't want to start from scratch,
  • you can spare some time for this,
  • you have crazy, yet somewhat useful ideas.

Short history of this project:

  • 2013: Project started as a primitive Assembler
  • Assembler development was completed, published as "ActiveX Light Assembler" (can be found in my threads here)
  • Plan to evolve Assembler into primitive programming language
  • 2014: First version of Perseus ("Unknown Universe") was released, basically a self-compiler. Used FASM as the Assembler.
  • Following community input, the second version was released ("Caffeinated Cat")
  • 2015: Development of Perseus 5 began (working title is "Perseus++"), built on a framework called DirectByte, Assembler no longer needed.
  • First version of Perseus++ released, very Pascal-like syntax, many bugs
  • Mid 2015: Perseus 6 Development started, first beta version of Perseus 6 was released, first version to be completely open-source.
  • Perseus 6 syntax cleanup, heavy changes to the syntax, now more C-like, but much easier, added a bunch of features

The next steps in development:

  1. Port the whole Perseus source code to AutoIt, eliminate VB.NET (the current main language)
  2. Redo the syntax debugger
  3. Publish final version of Perseus 6

 

More information about the language in its very long README on the project page (link above). If you are interested send me a PM, if you have any questions, leave them here.

Edited by minxomat

I will answer every single PM, and you are free to ask anything anytime.

Link to comment
Share on other sites

Hi

I normally ignore new/hobby languages until they get a following, but this looks interesting. I think I really like the language. My experience is in C/C#/Python, but VB.NET would be easy and I can do AutoIT. I should also mention that my only personal PC at the moment is a Mac.

Before I would consider committing to a project, I would need to know a few things:

  • Do you have a roadmap? Goals?
    • Your changelog looks like you haven't had a consistent plan (at least for extended periods of time); it seems like you've drifted to whatever happened to catch your interest. That's not a bad thing for a hobby project, but if you want a team working with you you'll need structure.
  • Why do you want to port the code to another language? That means taking time from developing new features to do what you've already done.
  • Why do you want to port the code to AutoIt, as opposed to a "standard" language like C, or to Perseus?
  • Are you certain you want to keep the language Windows-only? .NET Core now runs on Linux and OS X, so could it become cross-compatible, or has it's design already been tied too closely to Windows? (I see Windows.inc, but I'm wondering if we could have an OSX.inc, then maybe set another library on top for basic tasks, such as drawing windows -- that library would use whichever include files it needs for the architecture to which we're compiling.). Obviously, if you're going to use AutoIt, this question could be ignored.
  • You spoke of community input in your post -- what community have you fostered? Where is everyone? How welcoming would they be when I join?

--Ryan

Link to comment
Share on other sites

Hi Ryan, I'll tackle your questions QA style :) .

Do you have a roadmap? Goals? ... you'll need structure.

There is a private repository and multiple development environments (dev, stage, prod as usual). I only do occasional pushes to git, and (the public) Perseus only recently migrated from the now more than horrible sourceforge. All bug reports and features requests up to now only exist in the private repo. There is also a clear roadmap reflected in TODOs and changelogs. I'd like to have some input from possible team members to build a cleaner dev environment that is accepted by all parties.

Why do you want to port the code to another language?

Originally, the first version of what is now Perseus 5 was written using VB6. After a few licensing issues I had to do the mandatory upgrade to VB.NET - and I hate it. I've upgraded the source code with porting to AutoIt in mind, hence the very (vanilla) functional approach. Visual Studio is just too big for users who don't already use it, it is a multi-gigabyte download. And it is not free.

... language like C,...

If you implement a byte-critical thing like the DirectByte framework, you absolutely need managed code. Otherwise, possible exploits and unintentional code behavior eats development time.

...Perseus?

I do remember Caffeinated Cat. It was the last self-compiling version of Perseus and it was a nightmare to maintain. Over 13k LOC of Perseus code. You can't just be like "I'll add this feature using library X!", because with a self-compiler, there is no library X :D . A community member started to implement libraries in pure assembly, and while I was very thankful, it was really reinventing the wheel. Self-compiling is fun and taught me a lot, but I do not miss it.

Are you certain you want to keep the language Windows-only?

Yesno. Perseus was cross-platform (Win32 and Linux 386), but again, it was a nightmare to maintain. Perseus does not use any specific part of .NET, never did. Using a .NET (or Mono) language is the exact opposite of the lightweight approach I try to go for. ;) . But I do not rule out a OS X or linux version using the syntax or object model of Perseus in the future. Just not now.

Also, if you look at the source code @ github, you'll find that there are no error messages included in the compiler anymore. That is because part of the syntax debugger is already implemented in AutoIt. One more reason to just switch the project completely to AutoIt. BTW. I've tested a Wine-bottled version of Perseus on OS X and it worked flawlessly. Same goes for AutoIt.

what community have you fostered? Where is everyone?

I'm always talking about members of the german AutoIt forum, where Perseus originated. There where 2 crazy Perseus enthusiasts when Caffeinated Cat launched. Now, the german forum is slowly dying and everyone once excited about this isn't active anymore. One user did a bunch of bug reports, but that is it.

I will answer every single PM, and you are free to ask anything anytime.

Link to comment
Share on other sites

Hi

Visual Studio is just too big for users who don't already use it, it is a multi-gigabyte download. And it is not free.

 FYI, Visual Studio Community (not Express) is no-cost for individuals and open source development; still huge though (and not open source). If you need it.

BTW. I've tested a Wine-bottled version of Perseus on OS X and it worked flawlessly. Same goes for AutoIt.

Good to know. I wouldn't have even thought to try AutoIt in Wine.

Link to comment
Share on other sites

For porting on OS X, a better choice for you might be Visual Studio Code. Just a few MB. Next weekend, I'll create a new public repo on gh just for the port to AutoIt. I suggest you fork this one, too, and I'll just merge when you did something. There are a few guidelines to porting, which I've posted here: https://www.autoitscript.com/forum/topic/174143-so-you-want-to-port-code-from-one-language-to-another-huh/ 

I will answer every single PM, and you are free to ask anything anytime.

Link to comment
Share on other sites

Welp, I don't know the coding stuff but I will manage the whole project in a organized manner, make the documentation, maybe code cleanup? If I am eligible to volunteer, Count me in :)

 

TD :)

Edited by TheDcoder

EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time)

DcodingTheWeb Forum - Follow for updates and Join for discussion

Link to comment
Share on other sites

Hm, if you don't have much experience with "the coding stuff", I'd like you to be responsible for documentation. I'll type up some guidelines to this on the weekend and I'll create a Perseus-Doc repo on my github. Today, I have migrated all repos from the Perseus Developer group to my private profile. I'll create a new group once I've come up with clear guidelines.

I will answer every single PM, and you are free to ask anything anytime.

Link to comment
Share on other sites

It would be cool to help, but I only have experience with C# and VBA, plus my AutoIt skills are a little poor these days. I will still watch the github repo though.

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

Structural Upgrade

The new org can be found at https://github.com/Perseus-Dev

There are three teams (Users, Kernel-devs and documentation). If you'd like to contribute, drop me your github account name, and you will be added to the respective team(s). Current possible members are:

@rjframe - Kernel team
@Xandy - ? team
@TheDcoder - Doc team
@MikahS - Kernel team
@guinness ? - ?

I will answer every single PM, and you are free to ask anything anytime.

Link to comment
Share on other sites

Github username: Mkhsx64

Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Link to comment
Share on other sites

Just changed the username to "TheDcoder" in GitHub, There was a user called "TheDCoder" when I joined GitHub, I contacted GitHub about his, this was the reply:

Hi Damon,

You are in luck — we have classified the thedcoder account as inactive and released the username for you to claim, as per our Name Squatting Policy:

https://help.github.com/articles/name-squatting-policy

Be quick, as the username is now publicly available. Glad to help!

Cheers,
????? (censored)

I am happy, TD :)

EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time)

DcodingTheWeb Forum - Follow for updates and Join for discussion

Link to comment
Share on other sites

But GitHub warned me about something about redirecting my currents repos when I clicked the "Change Username" button, Hope GitHub didn't messed up anything :P

EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time)

DcodingTheWeb Forum - Follow for updates and Join for discussion

Link to comment
Share on other sites

Every github repo has a naming history, so whatever was the name at some point, the link will still be valid (unless you create a new repo with an older name, of course).

I will answer every single PM, and you are free to ask anything anytime.

Link to comment
Share on other sites

I'm rjframe on GitHub too.

Are you going to pull your existing examples into the new examples repository? Being able to ensure that the current examples run properly once the new port is complete would let us test it without needing to write new examples right away -- might save a bit of work.

I won't be able to begin (at least in earnest) until late next week. I've gone the last 7 months with no Internet access at home (5 with no PC at all); now I have a reason to change that.

--Ryan

Link to comment
Share on other sites

I'll copy the current examples to the new repo, they'll be a nice - as you said - test suite. I'll remove them from the current VB.NET repo when the port is done and the VB code is archived.

Btw. Time is not critical now, I'll need some time to create and correct the todos ;) 

Edited by minxomat

I will answer every single PM, and you are free to ask anything anytime.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...