YetAnotherForum
Welcome Guest Search | Active Topics | Log In | Register

Squirrel 3.1 stable released
fagiano
#1 Posted : Sunday, March 27, 2016 12:53:38 PM(UTC)
Rank: Advanced Member

Groups: Registered, Administrators
Joined: 6/11/2005(UTC)
Posts: 1,054

Thanks: 0 times
Was thanked: 77 time(s) in 59 post(s)
Hi all, I just released Squirrel 3.1 stable (Finally!).


***version 3.1 stable***
-added slice range for tolower and toupper
-added startswith() and endswith() in string lib
-added SQ_EXCLUDE_DEFAULT_MEMFUNCTIONS to exclude default mem fuction from compilation
-added sq_getreleasehook
-added thread.wakeupthrow()
-added sq_pushthread
-added \u and \U escape sequence for UTF8,UTF16 or UCS4 characters
-added CMake scripts(thx Fabian Wolff)
-the escape character \x is based on sizeof(SQChar)
-fixed several warnings(thx Markus Oberhumer)
-fixed optimizer bug in compound arith oprators(+=,-= etc...)
-fixed sq_getrefvmcount() (thx Gerrit)
-fixed sq_getrefcount() when no references were added with sq_addref() (thx Gerrit)
-fixed bug in string.tointeger() (thx Domingo)
-fixed weakref comparison in 32bit builds using doubles(thx Domingo)
-fixed compiler bug(thx Peter)
-fixed some error in the documentation(thx Alexander)
-fixed some error reporting in compiler(thx Alexander)
-fixed incorrect optional semicolon after "if block"(thx Alexander)
-fixed crash bug in compiler related to compound arith operators(+=,-= etc...) (thx Jeff1)

you can download the 3.1 stable here https://sourceforge.net/projects/squirrel/

ciao
Alberto
Follow me on Twitter @squirrellang
absence
#2 Posted : Wednesday, March 30, 2016 5:23:33 PM(UTC)
Rank: Advanced Member

Groups: Registered
Joined: 8/23/2014(UTC)
Posts: 102
Man
Location: Northern Germany & Lincolnshire, U.K.

Thanks: 1 times
Was thanked: 8 time(s) in 8 post(s)
excellent, thanks a lot
absence
#3 Posted : Wednesday, March 30, 2016 5:40:46 PM(UTC)
Rank: Advanced Member

Groups: Registered
Joined: 8/23/2014(UTC)
Posts: 102
Man
Location: Northern Germany & Lincolnshire, U.K.

Thanks: 1 times
Was thanked: 8 time(s) in 8 post(s)
oh, on a side note, I think the docs are not up to date in the release, some of the added api calls are not documented yet...? (for example sq_pushthread or sq_getvmrefcount). Well, they're easy enough to read from source, but just for completeness.... ^^
fagiano
#4 Posted : Wednesday, March 30, 2016 7:36:05 PM(UTC)
Rank: Advanced Member

Groups: Registered, Administrators
Joined: 6/11/2005(UTC)
Posts: 1,054

Thanks: 0 times
Was thanked: 77 time(s) in 59 post(s)
Ops, I guess those got lost in the reformatting. I'll see to fix that ASAP. Thank you.

Alberto
Follow me on Twitter @squirrellang
twotribes
#5 Posted : Wednesday, May 04, 2016 8:08:43 AM(UTC)
Rank: Member

Groups: Registered
Joined: 4/24/2012(UTC)
Posts: 24
Location: Netherlands

Thanks: 3 times
Was thanked: 0 time(s) in 0 post(s)
This is awesome! Thanks a lot for this Alberto! Before we merge/upgrade, do you happen to know if there are to be expected any execution speed gains, as that is our main bottleneck right now.

Thanks again!
twotribes
#6 Posted : Wednesday, May 04, 2016 8:28:15 AM(UTC)
Rank: Member

Groups: Registered
Joined: 4/24/2012(UTC)
Posts: 24
Location: Netherlands

Thanks: 3 times
Was thanked: 0 time(s) in 0 post(s)
Also, while merging I stumbled upon an internal fix, which I'd like to run with you:

sqstate.cpp:207

while(_gc_chain){
_gc_chain->_uiRef++;
_gc_chain->Release();
}

We changed that to:

while(_gc_chain){
_gc_chain->_uiRef--;
_gc_chain->Release();
}

With the following comment: if there are still references left, don't increment but decrement the ref count before calling Release()

What are your thoughts on this?
twotribes
#7 Posted : Wednesday, May 04, 2016 9:19:15 AM(UTC)
Rank: Member

Groups: Registered
Joined: 4/24/2012(UTC)
Posts: 24
Location: Netherlands

Thanks: 3 times
Was thanked: 0 time(s) in 0 post(s)
One more:

Has this issue been addressed in 3.1?

http://forum.squirrel-la...mp;m=5634&#post5634

When merging I noticed that above patch wasn't applied
fagiano
#8 Posted : Friday, May 06, 2016 6:17:23 PM(UTC)
Rank: Advanced Member

Groups: Registered, Administrators
Joined: 6/11/2005(UTC)
Posts: 1,054

Thanks: 0 times
Was thanked: 77 time(s) in 59 post(s)
ops! I think you are right, that patch didn't make it, it has to be fixed.

Alberto
Follow me on Twitter @squirrellang
fagiano
#9 Posted : Friday, May 06, 2016 6:20:40 PM(UTC)
Rank: Advanced Member

Groups: Registered, Administrators
Joined: 6/11/2005(UTC)
Posts: 1,054

Thanks: 0 times
Was thanked: 77 time(s) in 59 post(s)
twotribes wrote:
Also, while merging I stumbled upon an internal fix, which I'd like to run with you:

while(_gc_chain){
_gc_chain->_uiRef++;
_gc_chain->Release();
}



This is the correct one. However if the code has arrive at this point it means there is a loose end in the gc. I don't think It should be happening and I'm considering removing it.

Alberto
Follow me on Twitter @squirrellang
absence
#10 Posted : Saturday, May 07, 2016 12:33:56 PM(UTC)
Rank: Advanced Member

Groups: Registered
Joined: 8/23/2014(UTC)
Posts: 102
Man
Location: Northern Germany & Lincolnshire, U.K.

Thanks: 1 times
Was thanked: 8 time(s) in 8 post(s)
yes, the increase is a must, as the loop may encounter objects with a reference count of zero already, which will end in a hard assertion.

Alberto, I wouldn't remove it. Think of production environments handing out squirrel scripting to people (think of mods, or industrial uses). We'd rather need kind of warning/exception or the like, though I have to admit I don't know how to do that properly...
twotribes
#11 Posted : Monday, May 23, 2016 8:38:13 AM(UTC)
Rank: Member

Groups: Registered
Joined: 4/24/2012(UTC)
Posts: 24
Location: Netherlands

Thanks: 3 times
Was thanked: 0 time(s) in 0 post(s)
Actually changing that increase in a decrease solved a major hang for us and is been present in production code for over 3 years now here. In the original code, an endless loop could occur there. I'll try to dig up the exact reason and cause as to why we changed it.
absence
#12 Posted : Wednesday, June 01, 2016 12:44:14 PM(UTC)
Rank: Advanced Member

Groups: Registered
Joined: 8/23/2014(UTC)
Posts: 102
Man
Location: Northern Germany & Lincolnshire, U.K.

Thanks: 1 times
Was thanked: 8 time(s) in 8 post(s)
please keep in mind that when that code gets executed it indicates that things already went wrong at some point before. Changing the code as proposed will not fix your issue anyways, there's a reason for that assert(_gc_chain==NULL) there... (you didn't remove that, did you?)
Users browsing this topic
Guest
Forum Jump  
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

Clean Slate theme by Jaben Cargman (Tiny Gecko)
Powered by YAF 1.9.4 | YAF © 2003-2010, Yet Another Forum.NET
This page was generated in 0.219 seconds.