PlayBASIC V1.65 (Work In Progress) Gallery

Started by kevin, April 03, 2016, 12:01:41 AM

Previous topic - Next topic

kevin

#30
 PlayBASIC V1.65 BETA #49 (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)  (2nd Aug,2016)

     V1.65 Beta #49 is the first public build of the V.65.    This build replaces the run time execution engine, which means big updates to the compiler and optimizer..   So when lots of stuff change, more faults appear :)  That's where you come in..  




Bug Reporting


    See->> PlayBASIC V1.65 Bug Post Thread (login required)


       

Download


  Removed, newer builds are bellow.


kevin

#31
 PlayBASIC V1.65 BETA #50 (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)  (4th,Aug,2016)

     V1.65 Beta #50 is the second public build of the V1.65.    This one includes bugs for bound function calls, Restore DATA, ExitFunction and a minor console debug messages..   So more stuff runs out of the box, but not everything...


      Newer build posted bellow..

kevin

#32
 PlayBASIC V1.65 BETA #51 (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)  (6th,Aug,2016)

     V1.65 Beta #51 is the 3rd public build of V1.65.    Found some more missing stuff and broken tweaks, such as the directives failing which would make libraries like MAPS not compile.  Another oddity caused the runtime to crash before the VM even started, which was nice of it, and another problem was with compares where the optimizer could break them, rather than stream line them..        

     End result is more stuff runs...  A lot of things don't though :)



Bug Reporting


    See->> PlayBASIC V1.65 Bug Reports (login required).


       

Download


  Download PlayBASIC V1.65 Beta51 (6th,Aug,2016)   (OLD version removed, newer version bellow)





kevin

#33
 PlayBASIC V1.65 BETA #52 (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)  (9th,Aug,2016)

     V1.65 Beta #52 is the 4th public build of V1.65.    This revision includes fixes to the new DIM which was missing some resizing and string handling code , SplitToArray wasn't adding the offset when outputing to a string array.   FOR /NEXT didn't like STEP values of a different type.  So an Integer loop with a float step would break at runtime and vice versa.   There's also a fix in the linked list code that could break the range checking on the link as well as includes the missing On GOSUB command.     The debugger has also has been updated and should now be able to view typed arrays and typed lists as before.    

     There's a few commands that aren't available such as SetArray/GetArrray which are used in a number of legayc demos, so I guess we'll have to look at some way to recreate such functionality in the new VM.  All in all we're a step closer to a stable build, but there's still a lot of runtime error trapping mssing from the new VM...  Which can make the runtime hang..


       

Download



  DownloadPlayBASIC V1.65 Beta52 (9th,Aug,2016)     (OLD version removed, newer version bellow)








kevin

#34
PlayBASIC V1.65 – Beta 54:  Stacking Around

     Been testing a lot of code the last week or so and have found a dozen or so faults/missing functionality,  one of the most recent was the scope handling code.  Basically there operations to control the scopes data on the VM stack.   Hadn't noticed it wasn't implemented as it only really gets used during recursion.  After looking through the old solution we find a bunch of temp allocations in it.  Which as you know I'm not terribly fond of.    Dynamic allocating can be the bottle neck in some routines, so it's best if you can remove it.  

    Last night was spent sifting through the existing code trying to come up with a lighter alternative method.   If you imagine strings for example, then when we enter a function the string needs to be prepared for you.    If the  function calls itself then we need to backup it's existing state.    There's a number of ways of doing this and all they all have ugly by products.   The old way just pushes the old handle and then allocates a new string, then pops and releases it later on.  

   What this means, is we're allocating a new string and continuing on with the function call,  the string is then freed upon exit.   This works, but... the new string might need to be expanded since we've no way of knowing how big a string is going to be up front,  so new ones are allocated small (FASTER).   So if pass a big string through a function and it might need multiple allocations and copies to preserve and restore..  

   The other main idea is the push by value idea, where the string gets copied to the heap and the string handle is reset to zero length.    This requires no allocation, other than heap management.  Which sounds good, until you hit the but.. which is now the size of the string could have significant impact on runtime performance.   Most strings tend to be small, but imagine a function where the strings are large, say 10K or more characters long.  Now that would create significant runtime penalty,  even so I'm still tending towards trying out such an implementation.  If it doesn't work so, we can always go back to a tweaked version of how it used to work..  



kevin

#35
 PlayBASIC V1.65 BETA #54 (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)  (16th,Aug,2016)

     V1.65 Beta #54 is the 5th public build of V1.65.    The main addition in this revision is the addition of the recursive function support, which had been left out of the previous builds.    The method this now uses has been streamlined also to avoid runtime allocations, which should help functions with a local of local data perform better.   It's worth noting though that stack space is limited, so diving into deep recursion isn't recommended, or even a good idea generally if you ask me... :)  



Bug Reporting


    See->> PlayBASIC V1.65 Bug Reports (login required).

       

Download


  Download PlayBASIC V1.65 Beta54 (16th,Aug,2016)   (OLD version removed, newer version bellow)




kevin


PlayBASIC V1.65 Beta 55 -   SetArray / GetArray

      The SetArray  / GetArray commands are some of the last known missing functions.  They allow the user to grab the index of an array from the heap and then use that to move that array's handle to a target array.   This worked fine in the legacy VM's but with VM3 we changed how all data is accessed, so these were broken.       Replacing them has meant building a way of emulating the original behaviour, which was implemented this morning and as result more programs spring to life.   

      What's left now should  be those subtle well hidden differences between the old and new runtimes. 


kevin

#37
 PlayBASIC V1.65 BETA #55 (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)  (20th,Aug,2016)

     V1.65 Beta #55 is the 6th public build of V1.65.    In this build we've uncovered that a shift in the logic behind the Dim/ReDim functions that could break some legacy programs from working.    The problem boils down to the how arrays are passed by handle into functions.   This is generally a cheap way of passing structures since all you need do it copy a single integer, but some array functions need to know the  data type (user defined) of the structure they're building,   such as dim and redim.  Now since we're passing a handle, the compiler doesn't really know what User Defined type of array it's passing it the other.  Some old programs uses this as a feature to save a few lines of code, even when it's not..  Long story short, is that is was possible to pass a Typed Array in a function and redim it as something else completely..  It works in old builds as they get the data type from the inside the array before it redim's it, where newer builds get the data type from the array's reference..   So the newer runtime mimics the old way for now.     Will have to revisit this sooner or later.
   
     Another change is with ExitFunction which would allow statements without the same number of params, which would create logic issues with stack management.  

       

Download


  Download  PlayBASIC V1.65 BETA #55  (20th,Aug,2016)  (Newer builds bellow)


kevin

#38
 PlayBASIC V1.65 BETA #57 (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)  (7th,Sep,2016)


     V1.65 Beta #57 is the 7th public build of V1.65.    This build just contains a few small fixes..  



kevin

  PlayBASIC -  Building a Release:

       Unfortunately,  real life has got in the way of PlayBASIC development over the past month.   While life is starting to get back on track, V1.65 development has taken a real back seat for the time being.    While is frustrating for everyone,  I would rather get a version of this out sooner, than later.   So starting tonight I'll be kicking into building  a release version.  Now this will mean it'll have a few missing VM changes, but I feel they'll take some time to perfect.   So it's probably best to get a version out there and find all the existing hiccups, before introducing another big change...

       Anyway, thanks for your patience and kick back get coding...  Just one bit at a time !


kevin


   PlayBASIC V1.65 - Retail Build Running

    While I spent the afternoon watching the bulldogs (my football team) reserves winning their grand final.. (Can't help but start to put the cart before the horse now! :) #bemorebulldog ) I also was able to get the first retail build of PlayBASIC V1.65 to compile and run. So it's looking like we can get a retail build out sooner, rather than later.

   So that's the good news, but the bad news is that's it's going be to be a little fresh in terms on the ground testing. So I wouldn't expect a seamless transition between V1.64 editions to V1.65 and beyond. But I'm sure the new speed will more than compensate you for that. Of course if you find something odd, post it the V1.65 bug report thread.

   I'm not too sure when I'll be able to get a build on the server, but later in the week is looking most likely.


kevin





PlayBASIC V1.65 _Retail Upgrade_ Now Available (9th, Oct, 2016)



   NOTE: THIS IS AN AS IS BUILD OF V1.65 - it's not 100%, we know that, but need your help to complete it !


   The V1.65  introduces the next generation of the PlayBASIC virtual machine, so everything on the execution side of the product is new.  This new VM gives us better speed (with even more speed to come) but of couse all these changes introduce new gremblins also.   So you should expect to find programs that don't compile and simply wont work.     Somoe of these changes occur from compiler / parser side of things, but things like crashes will be either some missing functionality in the new VM or something it used to do, isn't being handled anything, or has changed.  

   For  V1.65 related errors, post them in the V1.65 bug reporting thread (login required).  


   Don't have a retail version of PlayBASIC ? and want to find out more information about PlayBASIC programming > please visit the www.PlayBasic.com and download the free learning edition.



Downloads


  Download PlayBASIC V1.65 Retail Upgrade (login required)  (9th,Oct,2016)  



kevin

#42
    PlayBASIC V1.65B - Work begins

       Even though it's Christmas time and we've had a very difficult few months,  I wanted to say that work has resumed / started on the second revision of the V1.65.   It'll most likely be bugs and tweaks only, unless something really need to be replaced, so since it's true revision of V1.65.    

       I found a few programs that don't work in V1.65, but there should be a lot of others.  Therefore I need you guys to help locate and isolate as many crashes as possible and put them all in the V1.65 bugs thread..  So there all in one big list.  

       Go here for V1.65 Bug Reports (login required)

       Anyway, in the mean time I hope you all have a great christmas and happy and safe new year.. .


kevin

#43
    PlayBASIC V1.65B - Beta 1

  Found another operation that was missing that would cause programs to hang that inlined array copy functions.  Which is where  you can assign one array to another.  Eg   DestArray() = SrcArray()    The parser would output these as move operations as such the array handle would have junk in it causing it to die.

   

kevin

#44
 PlayBASIC V1.65B BETA #2 (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)  (6th,Jan,2017)

     V1.65B Beta #2 is the 8th public build of V1.65.    This build contains a few small fixes..  



Bug Reporting


    See->> PlayBASIC V1.65 Bug Reports (login required).



Download


   Download PlayBASIC V1.65B Beta2 (login required)  (6th,Jan,2017)