Pas2js Umfrage zur Weiterentwicklung

Mitteilungen und Ankündigungen
Antworten
Mattias
Lazarusforum e. V.
Beiträge: 175
Registriert: Do 22. Mai 2008, 15:14
OS, Lazarus, FPC: LinuxOSX (L head FPC head)
CPU-Target: xxBit

Pas2js Umfrage zur Weiterentwicklung

Beitrag von Mattias »

Hallo,

Pas2js nähert sich der Version 2.0.
Die wichtigsten Neuerungen sind:
- Attributes
- Generics
- Async/Await support
- Better exception interception
- Class constructors

Und wieder mal möchten wir wissen, was Ihr als nächstes in pas2js braucht:

https://forms.gle/VfLbgxd8fQrU2hia8

Ein paar Punkte bedürfen wahrscheinlich der Erklärung:

- Asm annotations sagen dem Compiler, welche Bezeichner vom asm-Block benutzt werden, also nicht wegoptimiert werden dürfen.

- Library support ist für NodeJS, VS Code, Atom and Electron plugin development, und W3 WebComponents

Mattias

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Pas2js Umfrage zur Weiterentwicklung

Beitrag von Socke »

Verstehst du unter "PWA" auch in anderen Browsern als Chromium lauffähige Webanwendungen? Ich würde mir hier den Lazarus-Gedanken wünschen: Ich entwickle eine App, die ich entweder auf einem Webserver deploye und dann per Browser/Smartphone aufrufen kann, aber auch als Smartphone-App paketieren oder als Desktop-Anwendung ausliefern kann.
Selbstverständlich alles auf einer gemeinsamen Codebasis.

Weiterhin würde ich mir ein wenig mehr Kompatibilität zwischen Pas2JS und FPC wünschen:
  • In Pas2JS habe ich nur einen "Integer" Typen; in FPC brauche ich aber für (annähernd) den selben Wertebereich Int64
  • Wenn ich einen JSON-Array streamen/destreamen möchte, muss ich in FPC eine TCollection per fpjsonrtti serialisieren. In Pas2JS erhalte ich aber nativ einen Array.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Mattias
Lazarusforum e. V.
Beiträge: 175
Registriert: Do 22. Mai 2008, 15:14
OS, Lazarus, FPC: LinuxOSX (L head FPC head)
CPU-Target: xxBit

Re: Pas2js Umfrage zur Weiterentwicklung

Beitrag von Mattias »

Socke hat geschrieben:
Mi 3. Jun 2020, 11:53
Verstehst du unter "PWA" auch in anderen Browsern als Chromium lauffähige Webanwendungen? Ich würde mir hier den Lazarus-Gedanken wünschen: Ich entwickle eine App, die ich entweder auf einem Webserver deploye und dann per Browser/Smartphone aufrufen kann, aber auch als Smartphone-App paketieren oder als Desktop-Anwendung ausliefern kann.
Selbstverständlich alles auf einer gemeinsamen Codebasis.
Wie kommst du bei PWA auf "nur Chromium"? Laufen tut ein PWA in fast allen standard browsern.

Aus einer Electron app kann eine exe erzeugt werden. Da kann man sicherlich ein Lazarus addon schreiben, das dabei hilft.

Und ja, gemeinsame Codebasis wollen wir wohl alle.

Mattias
Lazarusforum e. V.
Beiträge: 175
Registriert: Do 22. Mai 2008, 15:14
OS, Lazarus, FPC: LinuxOSX (L head FPC head)
CPU-Target: xxBit

Re: Pas2js Umfrage zur Weiterentwicklung

Beitrag von Mattias »

Socke hat geschrieben:
Mi 3. Jun 2020, 11:53
In Pas2JS habe ich nur einen "Integer" Typen; in FPC brauche ich aber für (annähernd) den selben Wertebereich Int64
Pas2js hat wie FPC shortint, byte, smallint, word, longint, longword.
Beide haben nativeint und nativeuint, wobei diese je nach Plattform unterschiedlich viele bits enthalten.
In Pas2js hat es 54bits, in FPC auf 64bit Systemen 64bit.

Webassembly kennt 64bit integer.

Mattias
Lazarusforum e. V.
Beiträge: 175
Registriert: Do 22. Mai 2008, 15:14
OS, Lazarus, FPC: LinuxOSX (L head FPC head)
CPU-Target: xxBit

Re: Pas2js Umfrage zur Weiterentwicklung

Beitrag von Mattias »

Socke hat geschrieben:
Mi 3. Jun 2020, 11:53
Wenn ich einen JSON-Array streamen/destreamen möchte, muss ich in FPC eine TCollection per fpjsonrtti serialisieren. In Pas2JS erhalte ich aber nativ einen Array.
Geht es um Array von Objekten von-nach JSON-Array streamen?

Theoretisch könntest du in pas2js auch eine TCollection dafür nutzen, aber die nativen Funktionen sind einfach um Größenordnungen performanter.
Vielleicht kannst du ein kleines Code Beispiel angeben? Da kann man konkreter drüber reden.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Pas2js Umfrage zur Weiterentwicklung

Beitrag von Mathias »

Das Pas2js ist ein sehr interessantes Projekt, da sieht man sehr gut, was alles mit der Lazarus IDE möglich ist.
Dank dem Projekt konnte ich meine Ebedded GUI bauen. 😉
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Pas2js Umfrage zur Weiterentwicklung

Beitrag von Socke »

Mattias hat geschrieben:
Mi 3. Jun 2020, 14:26
Geht es um Array von Objekten von-nach JSON-Array streamen?

Theoretisch könntest du in pas2js auch eine TCollection dafür nutzen, aber die nativen Funktionen sind einfach um Größenordnungen performanter.
Vielleicht kannst du ein kleines Code Beispiel angeben? Da kann man konkreter drüber reden.
Richtig. Ich ermittle auf dem Server (FPC) eine Menge von Objekten, die an den Client (Pas2JS) gesendet werden. Mein Anforderung ist dabei typsicher zu arbeiten. D.h. außer der Serialisierung/Deserialisierung der Requests muss der Datentyp im Quellcode ersichtlich sein.

Aktuell läuft die Serialisierung auf Serverseite über ein Array of TPersistent. Dieser wird in einer eigenen Funktion in einen TJSONArray (Anforderung von JSON RPC) überführt. Die Entwicklung fühlt sich hier ein wenig altbacken an.

Auf Clientseite habe ich unterschiedlichde API ob ich mit TJSArray (Objekt) oder mit der Pascal-Syntax für Arrays arbeite. Bei TJSArray steht mir in Lazarus Code Completion zur Verfügung, dafür habe ich keinen typsicheren Code. D.h. pro Forma wäre für eine sichere Programmierung bei jedem Zugriff der Element-Datentyp zu prüfen.
Mit Pascal Arrays bin ich typsicher, muss für jeden Typen einen Type Helper bauen, da noch keine Generics unterstützt werden.

Aktuell stellt mich die gesamt Konstruktion nicht wirklich zufrieden.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Pas2js Umfrage zur Weiterentwicklung

Beitrag von mschnell »

Was mir einfällt:
  • optional Webasm "executable" statt JavaScript
  • "Parallel loop" und "future vartiable" (a la Oxygene) statt oder zusätzlich zu den "Asynchron Wait" Funktionen
  • Websock basierte Standard-Kommunikations-Library um fpc Programme auf Browser und Server zu verbinden (als Einstieg zu einer Methodik in der ein verteiltes Programm aus einem gemeinsamen Projekt kompiliert wird, das sich auf einem Desktop PC testen lässt und dann ohne Sourcecode-Änderung auf Web-Client /Server umstellen lässt)
  • Verwendung des GUI Builders von Lazarus mit der Möglichkeit eine GUI zu erstellen, die sopwohl auf dem Desktop als auch im Browser (einigermaßen) funktioniert
-Michael

Antworten