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