I begin college in the next few days.
I have been relearning a lot of stuff from my high school years to give me hopefully what will be an upper-hand.
I've been making music to keep the stress to a minimum.
When I become attuned to my schedule, I will find time to develop USL. I still have a lot of ideas and need to work out a few kinks.
Namely nests and a few other features.
This project isn't dead, and neither am I. Just in hiatus.
Friday, January 13, 2012
Monday, November 21, 2011
USL 3.8.4
I have added curly-brace blocks for method, while, and switch. The end keyword is still available to those who dislike curly-braced code-blocks. I fixed the null value. Apparently null variables could be set as strings but not as numbers. This issue has been resolved. I have also fixed tons of issues in the Mac binary. Why is C++ in Linux not compatible with OS X? Both are POSIX and should compile with basically no auditing. Thankfully I only needed to fix a few lines in one file instead of every other line throughout the entire set. Here are some examples of the curly-brace blocks and a reintroduction to the null keyword.
Curly-Brace Code-Blocks:
Reintroduction to null in USL:
To download 3.8.4, you can visit any of the following links:
freecode
Curly-Brace Code-Blocks:
method __
{
@var = "Value"
switch @var
{
case "value"
say "This will not be seen."
case "Value"
say "Curly-Brace Example."
}
}
__
Reintroduction to null in USL:
For those who did not already know, null removes the type and value of a variable. It allows a variable to change its "type."
Example:@str = "a string." # @str is now a string. @str = 3.14159 # @str is still a string. @str = null # @str is no longer a string. redefine @str @num # changing the identifier of @str to @num. @num = 3.14159 # @num is now a number. @num = null # @num is no longer a number. @num = "a string." # @num is now a string. remove @num # @num is no longer a variable.
To download 3.8.4, you can visit any of the following links:
freecode
Saturday, November 19, 2011
USL 3.8.3
I finally fixed the library loading issue brought to my attention in an email last week. USL now loads library definitions in script mode exactly as in shell mode. I changed the equal and unequal conditional operators as well. I'll demonstrate below.
New conditional statements:
This may seem like a very small change, but the previous version would not load scripts correctly. This version will. Tested on Mac OS X, Linux, and Windows.
To download 3.8.3, you can visit any of the following links:
sourceforge
freecode
New conditional statements:
if true == false say "This will never be seen." orif true != false say "true is never false" else say "This will never be seen." endif
This may seem like a very small change, but the previous version would not load scripts correctly. This version will. Tested on Mac OS X, Linux, and Windows.
To download 3.8.3, you can visit any of the following links:
sourceforge
freecode
Friday, November 18, 2011
USL for Mac OS X
A few people were wondering where the Mac binary was. So I compiled 3.8.2 on Mac OS X 10.6.6.
The Sparc compliant binary will come soon. Probably with the next release. I plan on distributing Linux, Win32, Mac, and Sparc versions of USL from here on out. Once the Sparc box is working that is. Until then the distributable will contain Linux, Win32, and Mac binaries. Thank you to the Mac and Solaris users interested in my language.
Here is the binary: USL for Mac OS X
The Sparc compliant binary will come soon. Probably with the next release. I plan on distributing Linux, Win32, Mac, and Sparc versions of USL from here on out. Once the Sparc box is working that is. Until then the distributable will contain Linux, Win32, and Mac binaries. Thank you to the Mac and Solaris users interested in my language.
Here is the binary: USL for Mac OS X
Tuesday, November 15, 2011
USL 3.8.2
After releasing 3.8.1, I forgot to check for bugs. Dev-FAIL on my part. I had fixed a very important issue in 3.8.1 but soon realized my interpreter was broken. This new release fixes those bugs. Thankfully. It took me three days to work out the best solution. Hope you are all happy with it. Sorry, Bruce. I will add your suggestion in the next release. I had that feeling you get when you finally fix the most irritating bug in your software. A eureka moment that I absolutely had to share with the end-users. So here it is.
In case you haven't figured out what the giant bug was, it was in the return keyword. When returning parentheses encapsulated expressions, the temporary parameter variables weren't being parsed correctly. So if you had a method returning (@var + 5), the method would have returned a string with the value: @var5. This issue has been resolved.
I have also added a way to capture parsed stdout similar to capturing the stdout of external processes.
Assigning variables with captured output:
sourceforge
freecode
In case you haven't figured out what the giant bug was, it was in the return keyword. When returning parentheses encapsulated expressions, the temporary parameter variables weren't being parsed correctly. So if you had a method returning (@var + 5), the method would have returned a string with the value: @var5. This issue has been resolved.
I have also added a way to capture parsed stdout similar to capturing the stdout of external processes.
Assigning variables with captured output:
@host = "chomp.Enter host: "
@pingResults ? "ping \{@host}"
@parsedOutput ! "for i in (1..15);say '${i}';endfor"
To download 3.8.2, you can visit any of the following links:sourceforge
freecode
Wednesday, November 9, 2011
USL 3.8.1
A kind anon alerted me to a few bugs and I have resolved the issues. The problem with 3.8.0 was that object instantiations would not inherit private members. Now they inherit everything for they are instances. Inheritance still works the same way as before. Another problem with the previous versions was parentheses encapsulated expressions. Just a white-space issue. Some examples.
Parentheses example:
sourceforge
freecode
Sparc compliant binary will be available within the next couple of weeks.
Parentheses example:
list words words = ( "Anonymous", "is", "still", "able", "to", "deliver." )The other change is self-explanatory. If an object member is private, it would not be inherited by object instances. Now all members will be inherited as the instance is merely a copy of the original object. Inheritance still works the same.
object Parent private method priv_m say "I am a private method." end public method pub_m say "I am a public method." end end object Child = Parent end p = Parent c = Child p.priv_m # Success c.priv_m # FailureTo download 3.8.1, you can visit any of the following links:
sourceforge
freecode
Sparc compliant binary will be available within the next couple of weeks.
Wednesday, November 2, 2011
USL 3.8.0
Seven changes have been made in this release. The seventh being the most important. Allow me to explain each change individually.
1. Object instances are now implicitly removed when created in methods.
2. Object variables may now be public or private members.
3. Errors return the actual line where the error occurred. (It returns the actual code that threw the error.)
4. Fixed the bug in say when printing the value of just an object variable. (Refer to example 2.)
5. Fixed the self keyword. self used to be limited to only executing object methods and returning their values with interpolation.
6. Interpreter and script arguments are now retrieved with indices.
7. USL now implicitly creates temporary variables from method parameters.
sourceforge
freecode
1. Object instances are now implicitly removed when created in methods.
object o method m;say "Hello, World!";end end method m oo = o # oo will be removed after leaving this method oo.m end
2. Object variables may now be public or private members.
object o public @var = "Hello, World!" method m say self.@var end end oo = o oo.m
3. Errors return the actual line where the error occurred. (It returns the actual code that threw the error.)
4. Fixed the bug in say when printing the value of just an object variable. (Refer to example 2.)
5. Fixed the self keyword. self used to be limited to only executing object methods and returning their values with interpolation.
6. Interpreter and script arguments are now retrieved with indices.
first_arg = args[0]
7. USL now implicitly creates temporary variables from method parameters.
method generic_add(a,b)
return (@a+@b)
end
@str = generic_add("abc","def")
@num = generic_add(250,6)
To download 3.8.0, you can visit any of the following links:sourceforge
freecode
Subscribe to:
Posts (Atom)