From hr2j at cs.virginia.edu Fri Jun 25 12:09:13 2004 From: hr2j at cs.virginia.edu (Hridesh Rajan) Date: Thu Mar 23 12:03:21 2006 Subject: [Eos-discuss] Eos-0.2.2 Message-ID: <002601c45ace$c1dff7e0$39898f80@cs.virginia.edu> Hi all, Last night I finished fixing up most of the bugs that were pointed out in Eos-0.2.1 and Eos-0.2.2 is now available for download. Bug fixes included in this release are described at the end of this e-mail. In response to Andre's e-mail about copying assemblies: Eos.Runtime.dll is a library that contains some common code needed by Eos generated executable, such as the signature of the join point, entities representing delegate chain for before, after and around advices. Before 0.2-Beta this code was very short and simple so it was appended to every executable and that is why no external reference was needed. Later after adding around advice, which resulted in some complexity, it became really inefficient to actually copy the resulting code into each executable and recompile it, so I decided to split the code as a library that is referenced by any executable that is generated by Eos. In future this library will contain implementation of the cflow stacks and other dynamic entities. Bottomline is that Eos.Runtime.dll is to be referenced by all projects. If there are any other issues. Feel free to send us an e-mail, and before close up we would like to announce that Eos-0.3 is going to be a merge release, where we will merge the research and production versions of Eos. If you need any specific feature, please let us know. We would certainly appreciate an example that would have worked if that feature would have been there. Thank you all for continued interest and specially Andre for the feedback, Have a great weekend, Rajan ------------------------ Bug Fixes in Eos-0.2.2: 1 Inserting an abstract pointcut definition in MyAbstractAspect, such as abstract pointcut AbstractPointcut(); causes the error message "Expected colon Explanation: Abstract pointcut was not supported. Fixed: Yes 2 Args pointcut seems not to be working. I'm getting the following compilation error: error CS1518: Expected open_bracket, dot, comma, or star Explanation: Args pointcut are not supported in Version 0.2 will be supported in Version 0.3 Fixed: N/A 3 MyAspect is not intercepting MyClass methods. Explanation: Recent changes in the AST hierarchy broke the pattern matching algorithm Fixed: Yes 4 Eos documentation says that "Each [...] aspect containing instancelevel advices provides implicit methods addObject and removeObject for specifying which instances are to be woven and unwoven". But the compilation of Aspect "MyAspect", which contains a instance level advice, generates the following error: MyAspect.cs(6,13) : error CS0103: The name 'addObject' does not exist in the class or namespace 'HelloWorld.MyAspect' If the instancelevel modifier is moved to the aspect, everything goes OK. Explanation: A typo in ASTParser.cs. A missing '|' from the expression "m.Attributes |= MemberAttributes.Public;" in the function CreateAdvice Fixed: Yes 5 Actually there are two bugs exposed by this code: (1) MyAspect pointcuts intercepts ALL methods, when it should intercept only methods that match the specified parameters. (2) The pointcut declaration in MyAspect requires an identifier after the argument type ("s", below): after():execution(public any any.any(string s)) { ... } Shouldn't the correct be: after():execution(public any any.any(string)) { ... } --- ? Explanation: This was in TODO: list. Thanks for pointing it out. Fixed: Yes 6 Qualified Import Bug: A qualified import in a C# file, such as using MyTest = TestClass.MyClass; results in the error: error CS1002: ; expected Explanation: Function GenerateNamespaceImport in the file EosCodeGenerator was generating using aliases in wrong order. Fixed: Yes 7 Even when removeObject is called in MyClass instances, MyAspect (instancelevel) keeps intercepting these instances. Explanation: Bug in Function BEquals in the class Eos.Runtime.ADP, not returning correct result. Fixed: Yes 8 MyClass methods are not being intercepted. Explanation: Pointcut overriding fixed Fixed: Yes 9 The compiler is accepting the undefined pointcut "hgkdsghgkdagfdhsfgfgkhfgjksaf", in MyAspect aspect. Explanation: Need full name resolution mechanism in place. Will be fixed before Eos 0.3. Fixed: NO From andrewilsonfurtado at yahoo.com.br Sun Jun 27 14:28:01 2004 From: andrewilsonfurtado at yahoo.com.br (Andre W B Furtado) Date: Thu Mar 23 12:03:21 2006 Subject: [Eos-discuss] Eos-0.2.2 References: <002601c45ace$c1dff7e0$39898f80@cs.virginia.edu> Message-ID: <000401c45c74$7d0be5f0$1102a8c0@aw> Hi Rajan, I'm happy to hear about Eos-0.2.2. Good job! I'll do some tests with this version during this next week, and here are some features I'd like to see in Eos-0.3: 1) thisJoinPointStaticPart (or something like this): I'm developing a logging aspect and some static info (such as the name of method) is the only thing missing. 2) after returning/throwing: also valuable to logging aspects 3) declare parents: useful for my distribution aspect, since I need to make some classes to extend from System.MarshalByRefObject 4) declare "attributes": it would be nice if it were possible to introduce an attribute in a class or method. For example, to finish my distribution aspect I need to make some classes to have the attribute [System.Serializable()]. It would also be useful for the implementation of a "test aspect", since some test tools specify "test methods" by marking them with attributes. 5) call pointcuts (I'm not sure if they are OK in Eos-0.2.1/Eos-0.2.2) Cheers, -- Andre ----- Original Message ----- From: "Hridesh Rajan" To: "'eos-discuss'" Sent: Friday, June 25, 2004 1:09 PM Subject: [Eos-discuss] Eos-0.2.2 > Hi all, > > Last night I finished fixing up most of the bugs that were pointed out in > Eos-0.2.1 and Eos-0.2.2 is now available for download. Bug fixes included in > this release are described at the end of this e-mail. > > In response to Andre's e-mail about copying assemblies: Eos.Runtime.dll is a > library that contains some common code needed by Eos generated executable, > such as the signature of the join point, entities representing delegate > chain for before, after and around advices. Before 0.2-Beta this code was > very short and simple so it was appended to every executable and that is why > no external reference was needed. Later after adding around advice, which > resulted in some complexity, it became really inefficient to actually copy > the resulting code into each executable and recompile it, so I decided to > split the code as a library that is referenced by any executable that is > generated by Eos. In future this library will contain implementation of the > cflow stacks and other dynamic entities. > > Bottomline is that Eos.Runtime.dll is to be referenced by all projects. > > If there are any other issues. Feel free to send us an e-mail, and before > close up we would like to announce that Eos-0.3 is going to be a merge > release, where we will merge the research and production versions of Eos. If > you need any specific feature, please let us know. We would certainly > appreciate an example that would have worked if that feature would have been > there. > > Thank you all for continued interest and specially Andre for the feedback, > > Have a great weekend, > > Rajan > > ------------------------ > Bug Fixes in Eos-0.2.2: > > 1 Inserting an abstract pointcut definition in MyAbstractAspect, such as > abstract pointcut AbstractPointcut(); causes the error message "Expected > colon > > Explanation: Abstract pointcut was not supported. > > Fixed: Yes > > 2 Args pointcut seems not to be working. I'm getting the following > compilation error: error CS1518: Expected open_bracket, dot, comma, or star > > > Explanation: Args pointcut are not supported in Version 0.2 will be > supported in Version 0.3 > > Fixed: N/A > > 3 MyAspect is not intercepting MyClass methods. > > Explanation: Recent changes in the AST hierarchy broke the pattern matching > algorithm > > Fixed: Yes > > 4 Eos documentation says that "Each [...] aspect containing instancelevel > advices provides implicit methods addObject and removeObject for specifying > which instances are to be woven and unwoven". But the compilation of Aspect > "MyAspect", which contains a instance level advice, generates the following > error: MyAspect.cs(6,13) : error CS0103: The name 'addObject' does not exist > in the class or namespace 'HelloWorld.MyAspect' If the instancelevel > modifier is moved to the aspect, everything goes OK. > > Explanation: A typo in ASTParser.cs. A missing '|' from the expression > "m.Attributes |= MemberAttributes.Public;" in the function CreateAdvice > > Fixed: Yes > > 5 Actually there are two bugs exposed by this code: > (1) MyAspect pointcuts intercepts ALL methods, when it should intercept only > methods that match the specified parameters. > (2) The pointcut declaration in MyAspect requires an identifier after the > argument type ("s", below): > after():execution(public any any.any(string s)) { ... } > Shouldn't the correct be: > after():execution(public any any.any(string)) { ... } --- ? > > Explanation: This was in TODO: list. Thanks for pointing it out. > > Fixed: Yes > > 6 Qualified Import Bug: A qualified import in a C# file, such as > using MyTest = TestClass.MyClass; > results in the error: error CS1002: ; expected > > Explanation: Function GenerateNamespaceImport in the file EosCodeGenerator > was generating using aliases in wrong order. > > Fixed: Yes > > 7 Even when removeObject is called in MyClass instances, MyAspect > (instancelevel) keeps intercepting these instances. > > Explanation: Bug in Function BEquals in the class Eos.Runtime.ADP, not > returning correct result. > > Fixed: Yes > > 8 MyClass methods are not being intercepted. > > Explanation: Pointcut overriding fixed > > Fixed: Yes > > 9 The compiler is accepting the undefined pointcut > "hgkdsghgkdagfdhsfgfgkhfgjksaf", in MyAspect aspect. > > Explanation: Need full name resolution mechanism in place. Will be fixed > before Eos 0.3. > > Fixed: NO > > > > _______________________________________________ > Eos-discuss mailing list > Eos-discuss@cs.virginia.edu > http://www.cs.virginia.edu/mailman/listinfo/eos-discuss From hr2j at cs.virginia.edu Sun Jun 27 21:07:40 2004 From: hr2j at cs.virginia.edu (Hridesh Rajan) Date: Thu Mar 23 12:03:21 2006 Subject: [Eos-discuss] Eos-0.2.2 In-Reply-To: <000401c45c74$7d0be5f0$1102a8c0@aw> Message-ID: <001101c45cac$4f5494d0$39898f80@cs.virginia.edu> Hi All, I have a few comments about the features Andre requested for Eos-0.3 and an invite for thoughts and examples at the end of the e-mail. 1) thisJoinPointStaticPart (or something like this): I'm developing a logging aspect and some static info (such as the name of method) is the only thing missing. Eos-0.3 will include this feature for sure. 2) after returning/throwing: also valuable to logging aspects About after/ after returning/ after throwing advices, I have heard different views from different people in the AOSD community. Some think that it was a design flaw in the first place to put these three special cases for the after advice and just "after" advice is sufficient for all three purposes. I would like to see some scenarios where this distinction is vital before I include these features for the new release. 3) declare parents: useful for my distribution aspect, since I need to make some classes to extend from System.MarshalByRefObject Declare parents was planned for 0.3, but we decided to support that in the 0.2.2, it should be present in the distribution available for download. 4) declare "attributes": it would be nice if it were possible to introduce an attribute in a class or method. For example, to finish my distribution aspect I need to make some classes to have the attribute [System.Serializable()]. It would also be useful for the implementation of a "test aspect", since some test tools specify "test methods" by marking them with attributes. Two realistic uses scenario are sufficient to justify this new feature. We will appreciate if you provide us with the example scenario that would work only if this feature was there. 5) call pointcuts (I'm not sure if they are OK in Eos-0.2.1/Eos-0.2.2) Call pointcuts are not supported in any Eos versions. We will make efforts to support them in the upcoming versions. In addition I would like to invite thoughts and example scenarios in the following dimensions: 1. You would like to advise an advice but due to the limitations of the current language model, its not possible to do so. 2. Current join points available in the language are not sufficient for you. In other words, you would like to advise a point in the execution of the program that is not available as a join point. -- Rajan From phmb at cin.ufpe.br Tue Jun 29 17:50:33 2004 From: phmb at cin.ufpe.br (Paulo Borba) Date: Thu Mar 23 12:03:21 2006 Subject: [Eos-discuss] Re: Eos-discuss Digest, Vol 5, Issue 2 In-Reply-To: <200406281600.i5SG0vNT006650@ares.cs.Virginia.EDU> References: <200406281600.i5SG0vNT006650@ares.cs.Virginia.EDU> Message-ID: <40E1E429.4050708@cin.ufpe.br> eos-discuss-request@cs.virginia.edu wrote: > > 2) after returning/throwing: also valuable to logging aspects > > About after/ after returning/ after throwing advices, I have heard different > views from different people in the AOSD community. Some think that it was a > design flaw in the first place to put these three special cases for the > after advice and just "after" advice is sufficient for all three purposes. I > would like to see some scenarios where this distinction is vital before I > include these features for the new release. > consider implementing transaction control as an aspect; you would then need something like public aspect PersistenceAspect { before(): TransMethods() { Pers.DBHandler.StartTransaction(); } after() returning(): TransMethods() { Pers.DBHandler.CommitTransaction(); } after() throwing(): TransMethods() { Pers.DBHandler.RollBackTransaction(); }... where TransMethods() identifies executions of transactional methods. this, for example, appears in S?rgio Soares, Eduardo Laureano, and Paulo Borba. Implementing distribution and persistence aspects with AspectJ. Proceedins of 17th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 2002, pages 174-190. November 4-8, 2002. Seattle, WA, USA. paulo -- Paulo Borba, Centro de Inform?tica, UFPE http://www.cin.ufpe.br/~phmb