IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PureBasic Discussion :

[Pure Basic] 4.20 Beta 6 pour Windows, 4.20 Beta 2 pour Linux et 4.20 Beta 1 pour Mac


Sujet :

PureBasic

  1. #1
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 280
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 280
    Points : 10 728
    Points
    10 728
    Billets dans le blog
    8
    Par défaut [Pure Basic] 4.20 Beta 6 pour Windows, 4.20 Beta 2 pour Linux et 4.20 Beta 1 pour Mac
    Et voici une nouvelle version avec plein de nouveautés !!
    Vous pouvez télécharger cette version sur votre compte.
    Voir le lien ci dessous pour plus d'informations ( en anglais).

    L'équipe PureBasic a bossé dur pour nous sortir cette version pour la fin de l'année, un grand merci à eux

    Pour info la lib Expression régulière utilise PCRE.
    - Added: Mail library
    - Added: Ftp library
    - Added: RegularExpression library
    - Added: Http library
    - Added: SerialPort library
    - Added: FLAC library
    - Added: SQLite library
    - Added: DirectX 9 subsystem

    - Added: #PB_Sound_MultiChannel
    - Added: Streaming for OGG and FLAC
    - Added: Streaming support for CatchSound()

    - Added: #PB_Compiler_Procedure
    - Added: #PB_Round_Nearest support (+#PB_Round_Up and #PB_Round_Down) for Round()
    - Added: CreateImageMenu(), CreateImagePopupMenu() for Office-style menus
    - Added: #PB_Button_Toggle for ButtonImageGadget()
    - Added: SetGadgetAttribute() with #PB_Button_Image and #PB_Button_PressedImage for ButtonImageGadget

    - Added: SHA1FingerPrint() and SHA1FileFingerPrint()
    - Added: ExamineMD5Fingerprint(), ExamineSHA1Fingerprint(), NextFingerprint(), FinishFingerprint()
    - Added: CRC32FileFingerprint()
    - Added: new parameter for CRC32Fingerprint() for start value

    - Changed: last Mid() parameter optional

    IDE / Debugger:

    - Added: New "Profiler" tool for the Debugger menu to monitor how often lines are called in the code.
    - Added: Debugger can now evaluate expressions (see Debug output)
    - Added: The Memory Viewer can accept any expression as the start/end address
    - Added: Adding a "+" at the "end address" field of the Memory viewer makes the end address relative
    - Added: Placing the mouse over a Variable will display its value while the program runs.
    - Added: Selecting a more complex expression and placing the mouse over it will evaluate the expression in
    the running program (if possible)
    Source de l'information

  2. #2
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 280
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 280
    Points : 10 728
    Points
    10 728
    Billets dans le blog
    8
    Par défaut
    Un petit aperçu du profileur, on ne voit pas le curseur sur l'image(copie d'écran).
    J'ai pris mon jeu PureBlock pour tester, en bas la liste des fichiers qui tournent.

    En ordonnée c'est le numéro de la ligne , la couleur indique de quel code il s'agit (voir la liste en bas) et en abscisse c'est le nombre de fois que la ligne est exécutée.ça permet de repérer les goulets d'étranglement et d'optimiser son code.

  3. #3
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 280
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 280
    Points : 10 728
    Points
    10 728
    Billets dans le blog
    8
    Par défaut
    Un aperçu rapide des nouvelles commandes

    J'espère que Fred fera la traduction de la doc

    Short libraries description:

    FTP:

    CloseFTP(#Ftp) - Close the specified client connection and send a notification to the server.
    CreateFTPDirectory(#Ftp ,Directory$) - Create a new directory on the FTP server.
    DeleteFTPDirectory(#Ftp, Directory$) - Delete a directory on the FTP server.
    DeleteFTPFile(#Ftp ,Filename$) - Delete a file on the FTP server.
    ExamineFTPDirectory(#Ftp ,Directory$) - Examine the current directory on the FTP server.
    GetFTPDirectory(#Ftp) - Return the current directory.
    FinishFTPDirectory (#Ftp) - Free the data allocated with ExamineFTPDirectory.
    FTPDirectoryEntryAttributes (#Ftp) - Return the attributes of the current entry in the last FTP listing.
    FTPDirectoryEntryDate (#Ftp) - Return the modified date of the current entry in the last FTP listing.
    FTPDirectoryEntryName (#Ftp) - Return the name of the current entry in the last FTP listing.
    FTPDirectoryEntrySize (#Ftp) - Return the size of the current entry in the last FTP listing.
    FTPDirectoryEntryType (#Ftp) - Return the type of the current entry in the last FTP listing.
    FTPProgress(#Ftp) - Return the progress on the current transfer.
    IsFTP(#Ftp) - Tests if the given '#Ftp' is an initialized FTP object.
    NextFTPDirectoryEntry(#Ftp) - Go to the next FTP directory entry
    OpenFTP(#Ftp ,ServerName$, User$, Password$ [Passive [Port]]) - Try to open a connection on the specified server.
    ReceiveFTPFile(#Ftp, RemoteFilename$, Filename$ [Asynchronous]) - Receive a file from a FTP Server.
    RenameFTPFile(#Ftp, Filename, $NewFilename$) - Rename or move a file on the FTP server.
    SendFTPFile(#Ftp, Filename$, RemoteFilename$ [Asynchronous]) - Send a file to a FTP Server.
    SetFTPDirectory(#Ftp, Directory$) - Change the current directory.


    Http:

    GetHTTPHeader(URL$) - Get the HTTP headers
    GetURLPart(URL$, Parameter$) - Get the specific part of an URL
    ReceiveHTTPFile(URL$) - Get the HTTP headers
    URLEncoder(URL$) - Returns the URL$ encoded to HTTP format.
    URLDecoder(URL$) - Returns the decoded URL$.
    SetURLPart(URL$, Parameter$, Value$) - Set the specific part of an URL


    Mail:

    AddMailAttachment(#Mail, Description$, Filename$) - Add a file attachement.
    AddMailAttachmentData(#Mail, Description$, *Buffer, Size) - Add a file attachement from a memory area.
    AddMailRecipient(#Mail, Address$, Flags) - Add a recipient to the speicifed #Mail.
    CreateMail(#Mail, From$, Subject$ [, Encoding]) - Create a new mail.
    FreeMail(#Mail) - Frees the previously created mail.
    GetMailBody(#Mail) - Returns the mail body.
    IsMail(#Mail) - Tests if the given '#Mail' is an initialized mail object.
    MailProgress(#Mail) - Returns the current progress of a mail being sent.
    RemoveMailRecipient(#Mail, Address$, Flags) - Remove a recipient to the speicifed #Mail.
    SendMail(#Mail, Smtp$ [, Port [, Asynchronous]]) - Send the mail.
    SetMailBody(#Mail, Body$) - Changes the mail body.


    RegularExpression:

    CreateRegularExpression(#RegularExpression, Pattern$) - Create a new regular expression.
    ExtractRegularExpression(#RegularExpression, String$, Array$()) - Extract strings according to the regular expression into an array.
    IsRegularExpression(#RegularExpression) - Tests if the given '#RegularExpression' is an initialized regular expression object.
    MatchRegularExpression(#RegularExpression, String$) - Tests if a string match the regular expression.
    ReplaceRegularExpression(#RegularExpression, String$, ReplaceString$) - Replace some strings according to the regular expression.
    RegularExpressionError() - Return the last regular expression error.


    SerialPort:

    AvailableSerialPortInput(#SerialPort) - Returns the number of remaining bytes in the input buffer.
    AvailableSerialPortOutput(#SerialPort) - Returns the number of remaining bytes in the output buffer.
    CloseSerialPort(#SerialPort) - Close the specified #SerialPort.
    GetSerialPortStatus(#SerialPort, Attributes) - Returns the specified status.
    IsSerialPort(#SerialPort) - Tests if the given '#SerialPort' is an initialized SerialPort object.
    SerialPortError(#SerialPort) - Returns the current error on the #SerialPort, if any.
    SerialPortID(#SerialPort) - Returns the unique ID which identifies the SerialPort in the operating system.
    OpenSerialPort(#SerialPort, SerialPortName$, Bauds, Parity, Data, Stop, HandshakeMode, InputBufferSize, OutputBufferSize) - Open a serial port for use.
    ReadSerialPortData(#SerialPort, *Buffer, Length) - Read an arbitrary amount of data from the #SerialPort.
    SerialPortTimeouts(#SerialPort, RIT, RTTC, RTTM, WTTC, WTTM) - Change the default timeouts.
    SetSerialPortStatus(#SerialPort, Attribute, Value) - Change the #SerialPort status.
    WriteSerialPortData(#SerialPort, *Buffer, Length) - Writes an arbitrary amount of data to the #SerialPort.
    WriteSerialPortString(#SerialPort, String$ [, Format]) - Writes a string to the #SerialPort.


    SQLite:

    UseSQLiteDatabase() - Add ODBC support to the database commandset.


    Flac:

    UseFLACSoundDecoder() - Enables the FLAC support for CatchSound(), LoadSound().

  4. #4
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 280
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 280
    Points : 10 728
    Points
    10 728
    Billets dans le blog
    8
    Par défaut
    La beta 2 est disponible sur votre compte.

    Elle corrige pas mal de bugs liés au changement de compilateur VC, mais c'est pour la bonne cause, les bibliothèques sont encore plus rapides ou plus compactes.et il y a quelques ajouts.

    - Added hex and binary support for Val() and ValQ()
    - Added #PB_String_NoCase constants for RemoveString(), ReplaceString() and CompareMemoryString()
    - Added #PB_String_Equal, #PB_String_Lower and #PB_String_Greater constants for CompareMemoryString()
    - Added #PB_String_InPlace constant for ReplaceString()
    - Added #PB_Sort_Ascending, #PB_Sort_Descending and #PB_Sort_NoCase constants for Sort() commands
    - Added #PB_Screen_NoSynchronization, #PB_Screen_WaitSynchronization and #PB_Screen_SmartSynchronization constants for FlipBuffers()
    - Added #PB_Sprite3D_NoFiltering and #PB_Sprite3D_BilinearFiltering constants for Sprite3DQuality()

    Source de l'information

  5. #5
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 280
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 280
    Points : 10 728
    Points
    10 728
    Billets dans le blog
    8
    Par défaut Version 4.20 beta 1 pour Linux
    La version 4.20 beta 1 pour linux est sortie, pour les nouveautés et changement reportez vous à la version Windows indiquée plus haut, ces versions sont au même niveau.

    Vous pouvez la télécharger sur votre compte.

  6. #6
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 280
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 280
    Points : 10 728
    Points
    10 728
    Billets dans le blog
    8
    Par défaut
    Histoire de donner quelques nouvelles , à la question

    'Est-ce qu'il y aura bientôt une version pour le Mac avec Intel ?'

    la réponse de Fred est

    It is in progress, but we get no date for now ("When it's done").
    C'est en cours, mais nous ne pouvons pas donner une date pour l'instant.

    C'est malgré tout une bonne nouvelle pour les possesseurs de Mac Intel

    Sinon , il y a eu pas mal de bugs corrigés dans la beta 2 , une beta 3 ne devrait pas tarder , et elle devrait intégrer la doc des dernières fonctions ajoutées.

  7. #7
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 280
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 280
    Points : 10 728
    Points
    10 728
    Billets dans le blog
    8
    Par défaut 4.20 beta 3 pour windows
    Comme je vous le disais hier, une nouvelle beta est disponible sur votre compte, et ce n'est pas un poisson d'avril ,il suffit d'aller sur son compte pour le vérifier

    Beaucoup de bugs corrigés, et ceci de nouveau par rapport à la beta 2:
    - CreateImageMenu()/CreatePopupImageMenu() now have a flag to enable/disable the gradient
    - CheckFTPConnection() added
    Et la doc des nouvelles fonctions est disponible en anglais. Comme ça vous avez tous les éléments pour tester entièrement cette nouvelle version.

  8. #8
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 280
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 280
    Points : 10 728
    Points
    10 728
    Billets dans le blog
    8
    Par défaut 4.20 beta 4 pour windows
    Nouvelle version beta disponible sur votre compte, elle est toute chaude, vous pouvez la télécharger.

    Hi there,

    Small bug fix release which should resolve compiler problem with debugger enabled (and some others small issues). Grab it on your personal account !

    Enjoy,

    The Fantaisie Software Team.

  9. #9
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 280
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 280
    Points : 10 728
    Points
    10 728
    Billets dans le blog
    8
    Par défaut UseJPEG2000ImageDecoder()
    Il y a une fonction cachée dans les beta !! au moins à partir de la beta 3.

    UseJPEG2000ImageDecoder() et sans doute UseJPEG2000ImageEncoder() ?
    Je n'ai pas PB sur mon poste pour vérifier.

    Le format JPEG2000 est parait-il très performant

    Par contre ces fonctions ne seront officielles qu'à partir de la 4.30, autrement dit, utilisez les à vos risques et périls , elles ne sont pas trop testées pour l'instant.

    [EDIT]
    Si ces fonctions vous intéressent , gardez précieusement la beta 4 , Fred va les supprimer dans la prochaine beta ! sinon il faudra attendre la 4.30 pour les retrouver .

  10. #10
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 280
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 280
    Points : 10 728
    Points
    10 728
    Billets dans le blog
    8
    Par défaut PureBasic 4.20 Beta 5 - Windows
    Et voila encore une beta , et Fred donne plus de détails, je n'ai pas encore lu, je m'y mets tout de suite

    Si quelqu'un souhaite proposer une traduction, il sera le bienvenu .

    [EDIT]

    Dans les grandes lignes :

    La PB Team utilise VC8 à la place de Lcc.Ce qui implique de nombreux changements pour recompiler correctement les biblios et qui explique le temps mis pour sortir les différentes bêtas.

    Bonne nouvelle, PureUnit (outil de tests unitaires développé par Fr3ak) devrait être intégré dans PureBasic dans une prochaine version. Pour info il est déjà disponible sur le site de Fr3ak ,j'en avais déjà parlé dans un post ici.

    Le compilateur est optimisé, Fred donne l'exemple du code de l'IDE (60000 lignes de code) qui compilait en 3500 ms avant, et en 500 ms après optimisation.

    De nombreux bugs sont corrigés.

    La docs est mise à jours dans les 3 langues (anglais, allemand et français).

    La PB Team annonce la sortie prochaine d'une version 64 bits et d'une version x86 MacOS.

    La version MacOS utilise NASM, les versions Win et Linux conservent FASM.

    Voila en gros ce qu'il faut retenir

    Hi,

    Here is the fifth beta release of the forthcoming 4.20 version of PureBasic. It's getting longer as expected, and we would like to spend some time to explain why. Don't flip out, it will be probably the last beta, if everything goes nicely . Here is the story:

    At first, 4.20 was meant to be a 'new command only' release. So no big problems were foreseen, as we won't work on the compiler or debugger. Better, most of the new libraries were already written, as we often do extra interresting work when fixing bugs is becoming too boring (we don't include the new library in the release tree, so the library can maturate pacefully). So good so far, 2 months after the 4.10 release, a new beta hit the ground. And now, things got a bit more complex.

    We encounter again a LccWin32 bugs/limitation so we decided it was time to migrate to VisualC++ 2005. This choice was made for serveral reasons:

    1) It is the 'official' C/C++ compiler on Windows
    2) It is free (we use the excellent 'Express' edition)
    3) It produce very good code (much better than lcc - some libs gained 50-100% in speed just by switching the compiler)
    4) It has a X64 version as well, so we have a direct port to 64 bits Windows without too much hassle (at least for the libraries)
    5) Bug free (at least on the compiler side)

    So we started so migration of all the libraries and compiler libraries (SystemBase, StringManager, etc..). Some of them used lcc inline ASM, so needed quite some work to have them to work. VC++ is also more picky and tons of warning appears and needed a correction. Moreover we activated the 64 bits portability check and our console were definitely flooded. Think than when we migrate the whole commandset, it affect tousand of files, all the makefiles needs to be adapted etc. But as you can understand, it is for the best. Several weeks later, we got everything building fine and as you guessed it, the 64 bits compiling was (almost) working as well. It was the base to begin the work for the famous X64 compiler.

    We though we were done with this, but a strange VC8 optimisation affected the way PureBasic called string functions (PureBasic assumed than the arguments passed on the stack for the functions would never be modified by a C function (and it is the case with lcc and gcc). But there is no clear infos on this, and VC8 actually use the stack parameters as temp area if needed). So a compiler modification was needed to fix that, after a lot of investiigation (we got random crashes on some functions).

    In between, we faced some regressions so we have written much more unitary tests to make the commandset more robust to changes. These are running using the 'PureUnit' tool developped by Timo (Fr34k) which will made its way in the official PB package soon, as it's really a great help to ensure a module behaves as expected, on every plateform.

    Now that all the libraries and helpers were compiled with VC8, we couldn't let the compiler itself using Lcc. So we started the migration as well. The gains for the compile time was good (10-30%) but we needed to trick a bit VC8 to use an old VC runtime dll (MSVCRT.dll) instead of the new VC8 one, as it wouldn't run out of the box without shipping the VC8 runtimes. Google helped here .

    On another topic, CVS is dying and replaced everywhere by SVN. We migrated the libs repository some time ago, but the compiler and internal tools were still using this old aged CVS. The migration wasn't very smooth as the CVS repository was on an NT based computer while the script needed to do the migration were on linux. After some twists, it finally worked. So SVN everywhere. And it's way better, honestly.

    Timo wanted to add a profiler to the IDE, so he did. And he did well. So it remainded me than i didn't profiled the compiler since a while and it could be quite fun to do. I tried to find a good profiler on Windows (anyone ?) but only found the costly Quantify (and even, the demo version showed only API call with VC8 executable, dunno if it's on purpose or if it's a bug). So i fired it my linux box and used gprof and the linux compiler. I used the IDE source code as benchmark (60 000 lines). And here, the disaster: 23 millions of stricmp() call - called when looking for a token (like constant, structure, procedure, functions, macro etc.). Seems like my old lookup tables are suffering here. For sure, the residents have almost 8000 constants and the lookup table was way too small. I decided to change that with real hash map. The gain was impressive, now only 500 000 calls to stricmp() are done. The whole processing time of the source code fall down from 3500 ms to 500 ms on my computer. This optimisation is available in the Beta 5, so if you have a big project, you may feel the difference.

    We also wanted to tackle most of the important remaining bugs since the last 4.10 version (and even before), so we spend quite some time to fix thus (on the 3 OSes). This led me to rework the 'QuadUnit', which is used to manipulate and execute quad based operation. The one developped for PB 4.00 was good but way too complex and some case were really hard to handle. So i simplified the whole design and recoded several key part. This change is also in Beta 5, so don't hesitate to report bugs if any. At least, all the quad reported bugs are now fixed. It should have no or very few regression as all fixed bugs are part of the compiler unit tests (every compiler bugs fixed get a new entry in the regression test suite).

    In fact, we added too much commands for a single version, but hey, we are megalomaniacs. Thus we got plently bugs reports on these (logically as these new libraries were not trivials). Thanks to all of you for the reports and the patience.

    As we can't stop, when we need to work on some fresh stuffs, we started the 64 bits version of PureBasic and the MacOS X x86 version. One could think than the MacOS X x86 version would be just a matter a recompiling, but you couldn't be that wrong. OS X x86 ABI is just horrible and need very strick stack alignement everywhere (on 16 bytes boundaries) which the Windows/Linux version doesn't requiers. If the stack is misaligned, it sometimes work, sometimes not, leading to very hard to track bugs. So, the compiler has been reworked to handle stack alignment all over the code. Moreover, FASM is not available on OS X x86, so we decided to migrate all the assembly libraries (linked list, misc etc.) on NASM. Indeed the compiler has been modified to output NASM compatible code instead of FASM. On the x64 side, the work has been even harder as the assembly itself isn't the same. Well, both are coming quite nicely, and the public test will come soon.

    The last but not the least, many new commands means a lot of doc to write. This takes a lot of time, as we do it in 3 languages as you know. The beta 5 comes with the doc in 3 langages, for all new commands.

    Ok, so you can grab the beta 5 on your account and test it. The beta for Linux and OS X are ready as well, but we will wait a bit before publishing them (to see if there is no major quirks. And btw, if you were using the beta 4, check your 'Temp' directory as a nasty bug didn't remove all the PB temp dirs and it could take some space.

    Have fun !

    The Fantaisie Software Team

  11. #11
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 280
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 280
    Points : 10 728
    Points
    10 728
    Billets dans le blog
    8
    Par défaut 4.20 Beta 6 pour Windows, 4.20 Beta 2 pour Linux et 4.20 Beta 1 pour MacOS X
    Fred et Fr3ak bossent comme des fous pour nous sortir rapidement la 4.20 !
    En attendant voici de nouvelles bêta , pour tous les OS. Vous pouvez les télécharger sur votre compte.

    Sans doute les dernières, s'il n'y a plus de rapports de bugs majeurs.

    Update: 4.20 Beta 6 for Windows is out, 4.20 Beta 2 for Linux and 4.20 Beta 1 for MacOS X as well !

Discussions similaires

  1. Basic ou Quick Basic pour Windows 8 (64 bit)
    Par Michaella dans le forum Windows 8
    Réponses: 0
    Dernier message: 09/04/2014, 12h53
  2. Réponses: 0
    Dernier message: 21/02/2014, 23h43
  3. Configurer un compilateur pour Qt 5 beta 2 sous Windows
    Par cedrix57 dans le forum Qt Creator
    Réponses: 3
    Dernier message: 30/12/2012, 21h54
  4. Réponses: 25
    Dernier message: 30/11/2010, 13h01
  5. pour les beta testeurs de windows vista
    Par largowinch dans le forum Windows Vista
    Réponses: 9
    Dernier message: 19/08/2005, 21h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo