Re: libc.lsh

Yann LeCun <[email protected]> Fri, 31 Jul 2009 12:53:54 -0400
Newsgroups gmane.lisp.lush.devel
Organization Courant Institute, NYU
Message-ID <[email protected]>
In Lush1, you could already create managed memory chunks with:
 (let ((buf (ubyte-matrix <bufsize>)))
    ..
    (foo (idx-ptr buf))
    ..
 )

The intended role of malloc and free was for unmanaged 
(or self-managed) memory chunks. They were simply provided
as a shorthand for "(to-gptr #{ malloc($n) #})" and
"#{ free($ptr) #}".

This functionality is still needed, even with the new
memory management scheme.

For example, if you want to allocate a C struct inside of a Lush
object, the memory management will be handled by the
constructor/destructor of the Lush object which will need to call
malloc and free.

Cheers,

  -- Yann


On Friday 31 July 2009, Ralf Juengling wrote:
> On Fri, 31 Jul 2009, Yann LeCun wrote:
> > malloc anf free in libc.lsh were meant to call the
> > C malloc() and free(), without memory management.
>
> Right.
>
> > A *lot* of libraries use them.
> > I'm not sure what the alternative is in Lush2.
>
> If you need a managed buffer and don't want to compile
> you would do
>
> (let ((buf (char-array <bufsize>)))
>    ..
>    (foo (idx-base buf))
>    ..
> )
>
> to create the buffer and get the address.
>
> In compiled code you alternatively may use inline
> C and mm_blob() if you know what you are doing.
> Here is documentation for lush's memory manager:
> http://sourceforge.net/apps/trac/libcmm/wiki/LibDocu
>
> If you need an unmanaged buffer and don't want to
> compile, then you need indeed something like
> malloc and free as were defined in libc. In compiled
> code, just use inline C.
>
> If we bring libc back, the code that uses malloc and
> free might compile just fine but still be broken,
> depending on what you are doing with the memory.
> That code should be reviewed.
>
> I will respond to the constants issue later,
> Ralf
>
> >  -- Yann
> >
> > On Friday 31 July 2009, Ralf Juengling wrote:
> >> Some definitions in libc.lsh might be problematic because
> >> memory management had changed (malloc & free), and most
> >> others were redundant. @ and @@ as they were defined in
> >> libc/constants was unecessary, I thought (why limit your
> >> namespace, especially if there are better ways ?).
> >> For both situations there are alternatives--just use
> >> defconstant and #. for read-time evaluation, as in
> >> common lisp.
> >>
> >> I removed those files so that it is clear which files I
> >> still need to update and what to look for.
> >>
> >> Ralf
> >>
> >> On Fri, 31 Jul 2009, Yann LeCun wrote:
> >>> Hi Ralf,
> >>>
> >>> Any good reason for not removing libc.lsh and constants.lsh
> >>> from Lush2 in lsh/libc?
> >>>
> >>> SDL and a whole bunch of other packages use them.
> >>>
> >>> Is there another to do the same thing on Lush2?
> >>>
> >>>  -- Yann
> >>>
> >>>
> >>>
> >>> -----------------------------------------------------------------------
> >>>-- ----- Let Crystal Reports handle the reporting - Free Crystal Reports
> >>> 2008 30-Day trial. Simplify your report design, integration and
> >>> deployment - and focus on what you do best, core application coding.
> >>> Discover what's new with Crystal Reports now. 
> >>> http://p.sf.net/sfu/bobj-july
> >>> _______________________________________________
> >>> Lush-devel mailing list
> >>> [email protected]
> >>> https://lists.sourceforge.net/lists/listinfo/lush-devel
>
> ---------------------------------------------------------------------------
>--- Let Crystal Reports handle the reporting - Free Crystal Reports 2008
> 30-Day trial. Simplify your report design, integration and deployment - and
> focus on what you do best, core application coding. Discover what's new
> with Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Lush-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/lush-devel



------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july