[Cuis] 4.1 to 4.2 migration question
Juan Vuletich
juan at jvuletich.org
Sun Mar 1 13:59:10 CST 2015
Well. Squeak has #parserClass, #compilerClass and #decompilerClass. It
seems this is to enable packages to define their own Compiler, etc. Do
you need this for OpenGL.pck? If not, then I'd rather not add them.
Cheers,
Jaun Vuletich
On 2/26/2015 5:51 PM, Phil (list) wrote:
> On Thu, 2015-02-26 at 10:25 -0300, Juan Vuletich wrote:
>> Hi Folks,
>>
>> (apologies for the delay. I was on vacations, and when back home, had
>> tons of stuff to take care of. Many of them, Cuis related :)
>> (inline)
>>
>> On 2/17/2015 12:15 AM, Phil (list) wrote:
>>> On Mon, 2015-02-16 at 18:49 -0800, Casey Ransberger wrote:
>>>> I think parserClass was there to give everyone a hook to implement
>>>> their own parsers, because Smalltalk was (in part) a prog language
>>>> research platform. Given that Cuis aims to be a minimal system,
>>>> someone may have removed it as unnecessary. Also, when Juan changes
>>>> some critical behavior, he tends to prefer coming up with a new name
>>>> for the method and associated variables, so that folks with existing
>>>> code aren't confused when their dependencies start behaving in
>>>> unexpected ways; this might also be what happened.
>>> I'm fine with it being removed... just wanted to understand why it was
>>> removed. I know there's been a lot of cog/compiler/vm stuff going on
>>> recently that I haven't kept up on so thought I'd check in before just
>>> making the minimal changes to get it working again if something bigger
>>> is going on.
>>>
>> Well, in Cuis it always ended being Parser, so I just removed it. Please
>> add it to SqueakCompatibility.pck.st, and send the .cs.st to me, or do a
>> pull request, etc.
>>
>> I apologize for this kind of hiccups, they are somewhat unavoidable when
>> cleaning the system. Sometimes it is not obvious whether something must
>> be kept, moved to SqueakCompatibility or just deleted. Please tell
>> anytime this happens, so we can fix.
>>
> No need to apologize, I was just giving an example of the kind of things
> I'm running into. I'm actually quite happy that cruft continues to be
> trimmed from Cuis and for something like this it's simple to just grab
> Parser directly... once I understood that's what I needed to do. For
> one-off type calls like this, that seems to be the simpler approach than
> starting to pile cruft into SqueakCompatibility. (I'd prefer to see that
> be a collection of things that are frequently called by popular Squeak
> packages rather than every silly edge case as that would result in it
> turning into Squeak over time)
>
> All I'm looking for is a small API surface that I can depend on, and
> communication when that surface needs to change. That would probably
> have the effect of reducing my migration from what has been a multi-day
> effort to a couple of hours. I'm not expecting migration to be free,
> just a little less expensive :-)
>
>
>> Cheers,
>> Juan Vuletich
>>
>>>> It would be interesting to look at what wants to refer to parserClass.
>>>> Could be one of those packages is doing something very, very
>>>> interesting:)
>>>>
>>>>
>>> It's from OGLExtManager...
>>>
>>> forwardExtMethod: aSelector
>>> "Compile a forwarder method in OpenGL"
>>> | code parser fwdCode |
>>> code := self class sourceCodeAt: aSelector.
>>> parser := self parserClass new.
>>> parser parseSelector: code.
>>> code := code copyFrom: 1 to: (parser endOfLastToken min: code size).
>>> fwdCode := String streamContents:[:s|
>>> s nextPutAll: code.
>>> s newLineTab: 1; nextPutAll: '"This method was automatically
>>> generated"'.
>>> s newLineTab: 1; nextPutAll: '^glExt '; nextPutAll: code.
>>> ].
>>> (OpenGL sourceCodeAt: aSelector ifAbsent:['']) = fwdCode
>>> ifTrue:[^self]. "no change"
>>> OpenGL compile: fwdCode classified: (self class organization
>>> categoryOfElement: aSelector).
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Cuis mailing list
>>> Cuis at jvuletich.org
>>> http://jvuletich.org/mailman/listinfo/cuis_jvuletich.org
>>>
>
>
More information about the Cuis
mailing list