Kiadta az Electronic Arts az EASTL forrását?

Címkék

A Standard Template Library (STL) nem felel meg 100%-ban a számítógépes játékok fejlesztéshez. Éppen ezért - hogy megkerülje az STL gyengeségeit - az Electronic Arts egy saját STL implementációt fejlesztett ki Electronic Arts Standard Template Library (EASTL) néven. A dolgok jelenlegi állása szerint ezt a saját STL implementációt ki is adta. A kérdés az, hogy vajon teljes egészében, illetve az, hogy szándékában állt-e vagy csak véletlenül került publikálására.

Az Ogre3d fórumában jelezte az egyik moderátor, hogy az EA Games nyílt forráskódot hostoló oldalán, a gpl.ea.com-on található egy 50MB-os fájl a Skate3 link alatt. Ez a fájl a WebKit Xbox 360 és PS3 portját tartalmazza. Ebben a tömörített állományban megtalálható az EASTL forráskódja. Az egyelőre nem tisztázott, hogy az EA a EASTL teljes forráskódját vagy annak csak egy részletét publikálta, illetve az sem teljesen világos jelenleg a felfedezők számára, hogy a kódnyitás szándékos vagy véletlen volt-e a vezető játékfejlesztő, publikáló, kereskedő cég részéről.

Kojack mindenesetre leválasztotta a WebKit cuccról az EASTL kódokat és feltolta a github-ra.

A részletek itt olvashatók.

Hozzászólások

Valaki adna felvilágosítást, hogy ez miért is izgalmas/fontos/érdekes?

-- "Bízzál Istenben és tartsd szárazon a puskaport!" - Cromwell --
-- Sayusi Ando - http://sayusi.hu --

"The large majority of EASTL would be useful to any kind of C++ software development."
Nagyjából ez a mondat össze is foglalja.

Az STL minden normális C++ program alapja. Ha valaki csinált egy "jobb STL"-t, és ezt publikálja is, azzal csak nyerünk, szép kis kiegészítés a boostos cuccok mellé. Bár még nem néztem meg, pontosan micsoda ez, szóval csak teoretikálok. Na megyek olvasni...
----
Hülye pelikán

Kimásolom neked a második link alatt olvasható szöveget, ami feltételezem megvilágítja a lényeget:

"Gaming platforms and game designs place requirements on game software which differ from requirements of other platforms. Most significantly, game software requires large amounts of memory but has a limited amount to work with. Gaming software is also faced with other limitations such as weaker processor caches, weaker CPUs, and non-default memory alignment requirements. A result of this is that game software needs to be careful with its use of memory and the CPU. The C++ standard library's containers, iterators, and algorithms are potentially useful for a variety of game programming needs. However, weaknesses and omissions of the standard library prevent it from being ideal for high performance game software. Foremost among these weaknesses is the allocator model. An extended and partially redesigned replacement (EASTL) for the C++ standard library was implemented at Electronic Arts in order to resolve these weaknesses in a portable and consistent way."

Várom a benchmarkokat, remélem lesz olyan, akinek van ezzel ideje szöszmötölni.

Nagyon szep. Egeszen meglepo, hogy vannak helyek az iparban, ahol ilyen gondossaggal programoznak.

----------------------
while (!sleep) sheep++;

Én azt hittem már rég kint van, de ezek szerint csak a leírása...

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o

Hat, azert ezen volna mit acsolni, hogy rendes, felhasznalhato konyvtar legyen belole. Legalabbis a github-os kodot elnezve, egy Makefile utan azert erosen kiabal.
--


Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.

"egy Makefile utan azert erosen kiabal."

Ezt olvasd el szerintem:

-- Usage --

Add the 'include' directory to your include path, and the contents of 'src'
to your project's source files. (Alternatively, you could try to compile the
files inside 'src' into a shared library).

You'll need to implement a few functions used by EASTL, such as two overloads
of operator new[], Vsnsprintf8, and possibly others. See example/example.cpp for
some sample code. There is also a wealth of compiler flags to choose from, see
include/EASTL/internal/config.h and include/EABase/config/* . For more detailed
documentation, you'll have to read the source code. :)