FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Ares updates
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
 
Post new topic   Reply to topic     Forum Index -> Ares
View previous topic :: View next topic  
Author Message
sean



Joined: 24 Jun 2004
Posts: 609
Location: Bay Area, CA

PostPosted: Wed Sep 21, 2005 2:38 pm    Post subject: Reply with quote

Version 0.2 is online with these changes:

* Moved sys.c.windows to sys.windows.c.
* Moved sys.c.linux to sys.linux.c.
* Changed C compiler alias to refer to DMC instead of SC.
* Added doc generation for modules in std.
* Added stub comments for document generator.
* Created two new exception classes, LogicError and RuntimeError, which derive from Exception.
* Changed all system error classes to derive from the two new children of Exception.
* Fixed error reporting for system errors so file name and line number are displayed.
Back to top
View user's profile Send private message
kris



Joined: 27 Mar 2004
Posts: 1494
Location: South Pacific

PostPosted: Thu Sep 22, 2005 2:28 pm    Post subject: Reply with quote

sean wrote:
Version 0.1 is online with these changes:

* Renamed Thread.stackHead to Thread.stackTop. Thread.stackTop returns a pointer to the logical top of the execution stack, and on some systems its address may evaluate to less than the stack bottom (x86, for example).
* Renamed Thread.stackTail to Thread.stackBottom. Thread.stackBottom returns a pointer to the logical bottom of the execution stack, and on some systems its address may evaluate to greater than the stack top (x86, for example).
* Renamed Thread.regHead to Thread.regFirst. Thread.regFirst returns a pointer to the beginning of a list of register entries. Entry order (and population) will be such that a PUSHA plus a memcpy can populate the list directly on x86 systems.
* Renamed Thread.regTail to Thread.regLast. Thread.regLast returns a pointer to the last valid element of a list of register entries in the order specified above.
* Added some Posix code in the Thread module to support the aforementioned changes. As with all non-Windows code, these changes are untested.
* Altered the GC support code in the Thread module to use the new conventions. This should also eliminate a bug where pointers to defunct stack data were being used in some cases. Upon review of the GC code, it appears that mark is inteded to operate on the range [pbot..ptop). This is consistent with standard coding practice, but it also implies that the address referenced by ptop will never be used by the GC. In any case, the Thread code has been written such that the entire stack and set of registers will be scanned even though the Thread functions expose an inclusive range.
* Moved reference to onOutOfMemory from dmdrt to dmdgc (where it belongs).

Please note that the filename has changed to correspond to the version number.


Hi Sean,

Can you add 'daemon' support to the Thread class and runtime support? This would cause the runtime to exit at end-of-main only if all threads are daemons; any non-daemon threads would keep the process alive (via a sleep(forever) call, or something).

For purposes of compatability, it might be useful to assume all threads are daemons by default, and a setDaemon(false) would need to be requested first?

What do you think?
Back to top
View user's profile Send private message
sean



Joined: 24 Jun 2004
Posts: 609
Location: Bay Area, CA

PostPosted: Thu Sep 22, 2005 6:22 pm    Post subject: Reply with quote

Hrm... so I'm guessing the runtime should delay calling all module dtors until after these threads have exited, which will probably mean a new extern call from dmain2. It's a good idea, though I'll have to mull over the implementation a bit.

For what it's worth, this could be done without runtime support via a ThreadPool class (which I've been meaning to create anyway). Something like this:
Code:
class ThreadPool {
    ~this() {
        joinAll();
    }
}

void main() {
    auto ThreadPool p = new ThreadPool();
}

Either way, I assume the app should go ahead an exit on SIGTERM and such, though it's probably safe to wait if main is exited via an exception? (which reminds me--I wanted to create a function to detect whether an exception is in flight, so this may be a good time to do so).
Back to top
View user's profile Send private message
sean



Joined: 24 Jun 2004
Posts: 609
Location: Bay Area, CA

PostPosted: Tue Sep 27, 2005 1:41 pm    Post subject: Reply with quote

New release online:

* Merged in DMD .133 changes.

I've been a bit busy recently and will tackle the discussed changes before too terribly long.
Back to top
View user's profile Send private message
sean



Joined: 24 Jun 2004
Posts: 609
Location: Bay Area, CA

PostPosted: Mon Oct 17, 2005 12:49 pm    Post subject: Reply with quote

New release online:

* Merged in DMD .135 changes.
* Added documentation for std.thread.
* Added some documentation for std.atomic.
* Cleaned up version blocks in std.c and made all inline functions extern (D).
* Renamed std.error to std.exception.
* Renamed exception classes from *Error to *Exception.
* Removed RuntineError and LogicError classes.
* All system exception classes now derive from Exception.

I continue to be Pretty Darn busy, so most of the changes here are cosmetic. The DMD .135 changes consisted mostly of importing comments to object.d.
Back to top
View user's profile Send private message
sean



Joined: 24 Jun 2004
Posts: 609
Location: Bay Area, CA

PostPosted: Wed Oct 19, 2005 12:32 pm    Post subject: Reply with quote

Version 0.5 is online with these changes:

* Merged in DMD .136 changes.
* Finished std.c.inttypes (constants added in a VerboseC version block).

The daemon thread issue is still outstanding. Hopefully I'll take care of that before the next release.
Back to top
View user's profile Send private message
sean



Joined: 24 Jun 2004
Posts: 609
Location: Bay Area, CA

PostPosted: Sun Oct 23, 2005 10:43 am    Post subject: Reply with quote

Bah. I forgot to update the downloads page after uploading the last two updates. They're available now.
Back to top
View user's profile Send private message
sean



Joined: 24 Jun 2004
Posts: 609
Location: Bay Area, CA

PostPosted: Tue Nov 08, 2005 2:05 pm    Post subject: Reply with quote

Version 0.6 is online with these changes:

* Merged in DMD .139 changes.
* Changed Win32 Thread.yield() from Sleep(0) to Sleep(1). See comments in code regarding why.
* Added 'extern' qualifiers where appropriate in std.c headers.
* Modified size_t to use typeof for size determination.
* Added documentation for std modules.
* Renamed std.error to std.exception (the module name was incorrect).
* Fixed documentation generation code.
* Changed extern callback reference from _d_outOfMemory to onOutOfMemory.
* Added 'make doc' line to build script.

Mostly cosmetic stuff. Hopefully I'll find some time before too long to do some actual coding.
Back to top
View user's profile Send private message
sean



Joined: 24 Jun 2004
Posts: 609
Location: Bay Area, CA

PostPosted: Mon Nov 14, 2005 2:38 pm    Post subject: Reply with quote

Version 0.6 has been modified with these changes:

* Added sub\std\regexp.d
* Added ares_sub.lib

You will need to manually link against ares_sub.lib if you want to use the sub package. The Win32 makefile has been modified, but the linux makefile has not. If anyone wants to make the necessary changes, please send me an updated makefile (I'm a bit fuzzy on the syntax or I'd do it myself).
Back to top
View user's profile Send private message
JJR



Joined: 22 Feb 2004
Posts: 1104

PostPosted: Mon Nov 14, 2005 2:45 pm    Post subject: Reply with quote

So we can just add ares_sub.lib to the previous ares.lib, and we're good to go with the regexp library?
Back to top
View user's profile Send private message
kris



Joined: 27 Mar 2004
Posts: 1494
Location: South Pacific

PostPosted: Mon Nov 14, 2005 4:27 pm    Post subject: Reply with quote

sean wrote:
Version 0.6 has been modified with these changes:

* Added sub\std\regexp.d
* Added ares_sub.lib

I see the regexp module decl is still "std.regexp" rather than perhaps "sub.std.regexp". Is that intentional? I mean, do you expect that an additional -I\Ares\src\sub should be required?

The latter would certainly make it painless to migrate 'sub' packages to the main area, if that were the intent ...
Back to top
View user's profile Send private message
JJR



Joined: 22 Feb 2004
Posts: 1104

PostPosted: Mon Nov 14, 2005 4:30 pm    Post subject: Reply with quote

But Kris, "sub-standard regexp" just sounds sooo bad! Laughing
Back to top
View user's profile Send private message
kris



Joined: 27 Mar 2004
Posts: 1494
Location: South Pacific

PostPosted: Mon Nov 14, 2005 4:41 pm    Post subject: Reply with quote

JJR wrote:
But Kris, "sub-standard regexp" just sounds sooo bad! Laughing

Very Happy I've been thinking that too ~ when one chooses a name like 'std', one is inviting trouble (such as Sexually Transmitted Disease). I was gonna' suggest an alternate name for 'sub', such as 'interim' or 'other'. Was also going to suggest moving that directory "up" one level, to clarify the use of -I paths:

-I[path to Ares source]
-I[path to Other source]

But it's no big deal either way. Nice to see it in there!
Back to top
View user's profile Send private message
sean



Joined: 24 Jun 2004
Posts: 609
Location: Bay Area, CA

PostPosted: Mon Nov 14, 2005 5:44 pm    Post subject: Reply with quote

kris wrote:
I see the regexp module decl is still "std.regexp" rather than perhaps "sub.std.regexp". Is that intentional? I mean, do you expect that an additional -I\Ares\src\sub should be required?

The latter would certainly make it painless to migrate 'sub' packages to the main area, if that were the intent ...

It was an accident, though perhaps it's a good idea to keep it this way. After all, the module is inteded to end up in std, and doing so would prevent the need for code changes later.

By the way, does std.regexp support the full RegExp syntax? I haven't given it more than a cursory look so far.


Last edited by sean on Mon Nov 14, 2005 6:02 pm; edited 1 time in total
Back to top
View user's profile Send private message
sean



Joined: 24 Jun 2004
Posts: 609
Location: Bay Area, CA

PostPosted: Mon Nov 14, 2005 5:57 pm    Post subject: Reply with quote

kris wrote:
I was gonna' suggest an alternate name for 'sub', such as 'interim' or 'other'. Was also going to suggest moving that directory "up" one level, to clarify the use of -I paths:

-I[path to Ares source]
-I[path to Other source]

But it's no big deal either way. Nice to see it in there!

Yeah, I don't really like sub being on the same level as std and sys also. Perhaps Ares should be divided as follows:

ares/core/std
ares/core/...
ares/eval/std
ares/eval/...

Basically, I'd like a place for submissions to live, and some way to mark various submissions as under review. I currently have "sub" and "rev" for this purpose, but would gladly change the names if someone could suggest something better. I suppose "eval" would replace "sub" in the preceding example, and beyond that perhaps documenting the revision level would be sufficient?
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic     Forum Index -> Ares All times are GMT - 6 Hours
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
Page 5 of 9

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group