Nette je plnohodnotný PHP 7.1 framework

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
David Grudl
Nette Core | 8228
+
+32
-

Nette je jedním z úplně prvních frameworků, který nasadil strict_types, skalární type hinty a návratové type hinty. Což je docela zásadní krok směrem k robustnějším aplikacím.

Minimální požadovaná verze PHP je 7.1 (pro některé balíčky 7.0).

Protože vývoj chystaných novinek do Nette 3 bude ještě nějakou dobu trvat, říkal jsem si, že by možná stálo za to připravit k vydání i současnou podobu, která se od Nette 2.4 liší vlastně jen type hinty a striktním režimem a obsahuje naprosté minimum zpětně nekompatibilních změn.

Včera jsme se na Posobotě bavili, že taková verze by mohla nést označení 2.9, jako symbolické završení dvojkové řady. Co si o tom myslíte?

hrach
Člen | 1838
+
+29
-

Verze 2.9 prakticky zpusobi problemy vsem autorum balicku, protoze standardne pouzivaji version bound ~2.2, treba. Takze to budou muset vsichni doplinit na <2.9, protoze interfaces nebudou kompatibilni.

Chapu potrebu to lidmi trochu otestovat a neresit to uz v dalsi fazi vyvoje. K tomu se muze hodit tagnout treba alfa1.

–1 na stable minor verzi, +1 na tagnuti major verze 3.0.0-alpha1 + jeji propagaci vcetne radnych release notes.

Editoval hrach (29. 1. 2017 20:03)

David Grudl
Nette Core | 8228
+
+2
-

Nad tím jsem taky přemýšlel a ono je to složitější. Totiž pokud se to označí jako 2.9, tak se doplňky nainstalují, ale nemusí fungovat, to je jasné. Pokud se to označí jako 3.0, tak se zase doplňky vůbec nenainstalují. Přičemž doplněk vůbec nemusí být nekompatibilní.

Tedy obě situace jsou problematické.

To, že se nenainstalují, je dost složité obejít, vlastně se mi nepodařilo najít způsob, jak Composer přesvědčit, aby je nainstalovat.

Pokud by se to vydalo jako 2.9, tak bych místa, která by nejpravděpodobněji vedla k nekompatibilitě, což je třeba interface ITranslator, metody jako attached() apod., nechal bez anotací a doplnil bych je až ve verzi 3.0.

enumag
Člen | 2118
+
+1
-

@DavidGrudl Pokud mi něco neuniká mělo by být možné doplňky nainstalovat takhle:

"require": {
	"nette/<whatever>": "^3.0@dev as 2.4.99",
	"some/nette-addon": "..."
}

Obecně i pokud typehinty odebereš na některých častých místech, reálně to myslím nepomůže. Každý druhý doplněk stejně bude přetěžovat něco co jsi tímto způsobem nerevertnul a budeme tam kde jsme byli.

Souhlasím s @hrach, že alpha verze je lepší nápad.

Editoval enumag (29. 1. 2017 23:58)

David Grudl
Nette Core | 8228
+
+2
-

Trik s as nefunguje, protože pokud např. nette/application 3.0 vyžaduje nette/utils 3.0 a ty v composeru zadáš "nette/utils": "^3.0 as 2.4.99", odmítne to instalovat nette/application.

Obecně i pokud typehinty odebereš na některých častých místech, reálně to myslím nepomůže.

To je právě otázka. U doplňků, které používám, by to vyřešilo úplně všechno. Ale moc doplňků nepoužívám.

Jde mi o to, jaká je vůbec ochota tuhle verzi testovat, testovat ji s doplňky atd. A když bude někdo chtít přejít na striktní verzi, bude pro něj v pohodě, že třeba půl roku pojede na alpha verzi, do které logicky nebudou přibývat žádné fixy?

Aby bylo jasno, pro mě je tagnutí alpha verze řádově snazší řešení.

Tomáš Jacík
Člen | 147
+
+3
-

A co třeba ta změny návratové hodnoty z FALSE na NULL v database balíčku? Já bych database s touto změnou také rád vydanou. Osobně jsem všemi deseti pro release, ale ať je to 3.0. Autoři budou moct již nyní pracovat na kompatibilitě svých balíčků s 3.0 a budou mít motivaci, když bude venku. Novinky klidně můžou jít v 3.1.

Editoval Tomáš Jacík (30. 1. 2017 0:12)

David Grudl
Nette Core | 8228
+
+4
-

Ono bude lepší to rozebrat na úrovni jednotlivých balíčků.

  • Tracy, Reflection, SafeStream, Tokenizer: nová verze vůbec vycházet nebude
  • Tester: vyjde verze 2, ale tohle je zcela nezávislá komponenta
  • Utils, Security, Robot-Loader, Php-Generator, Neon, Mail, Finder, Component-Model, Caching, Bootstrap: tady je verze 3 v podstatě hotová, neplánuji nic dalšího
  • Database: tady to chce projít pull requesty, za sebe nic nového neplánuji
  • Application, Http, Latte: tady je v plánu větší refactoring, bude to pár měsíců trvat
  • Form: je závislé na předchozích balíčcích, nelze vydat novou verzi dřív
  • DI: tady je potřeba vyřešit prioritizování CompilerExtensions, také to bude chvíli trvat

Tedy u většiny balíčků můžu prakticky ihned vydat beta verzi, jen u pěti z nich (ale zase klíčových) bude vývoj ještě nějakou dobu trvat. Takže bych v jejich případě asi vydal alpha verzi, kvůli testování těch striktních typů.

hrach
Člen | 1838
+
-1
-

Přičemž doplněk vůbec nemusí být nekompatibilní.

Tak to plati asi uplne pro vsechno. Kazdy BC break se nemusi projevit. Zasadni problem ale predstavuji proste knihovny, protoze to je treti strana, ta se tezko da ovlivnit. Svuj kod opravim, opravovat cizi kod nese znacne naklady :(

Tedy u většiny balíčků můžu prakticky ihned vydat beta verzi, jen u pěti z nich (ale zase klíčových) bude vývoj ještě nějakou dobu trvat. Takže bych v jejich případě asi vydal alpha verzi, kvůli testování těch striktních typů.

To by byla asi ta nejlepsi varianta.

pojede na alpha verzi, do které logicky nebudou přibývat žádné fixy?

Toto teoreticky mozne je. Da se treba tagnout 3.0.0-preview1 a pak udrzovat stejna jako stable tuhle vetev pomoci preveiw2 tagu, apod., respektive branch preview a lidi v composeru s 3.0.0@preview. Coz bude rozdil oproti masteru.

kukulich
Člen | 58
+
+8
-

Jde mi o to, jaká je vůbec ochota tuhle verzi testovat, testovat ji s doplňky atd.

Ano, my ve Slevomatu rozhodně tu verzi plánujeme otestovat. A to i v případě, kdyby nevyšla ani alpha, ani 2.9. Když bude ale ta verze s type hinty nějak otagovaná, tak budeme rozhodně raději, konkrétní commity v composeru jsou zlo.

A když bude někdo chtít přejít na striktní verzi, bude pro něj v pohodě, že třeba půl roku pojede na alpha verzi, do které logicky nebudou přibývat žádné fixy?

Pokud nebudou žádné fixy přibývat ani do stable balíčků, tak nám nebude vadit používat alpha verzi třeba půlroku. Ale pokud vyjde např. nette/utils 2.4.5 s nějakými opravami, tak bychom rádi viděli i třeba alpha2 s danými opravami.

David Grudl
Nette Core | 8228
+
+9
-

Tak všechny balíčky jsou otagované jako 3.0.0 alpha nebo beta.

chemix
Nette Core | 1310
+
+5
-

napise nekdo na phpweekly.com, ze Nette je venku ve verzi 3.alpha ?

chemix
Nette Core | 1310
+
+6
-

navrh ?

Ahoj, chtel bych vas upozornit ze Nette Framework vydal prvni verzi 3.aplha ktera plne podporuje strict types, scalar typehinty i return typehinty. Nevim zdali jiny framework je takto pripravan na nadchazejici verzi php 7.1

Nette Framework je podle ankety sitepoint 3. nejoblibenejsi framework roku 2015 https://www.sitepoint.com/…vey-results/

best regards

H.

Tomáš Votruba
Moderator | 1114
+
+2
-

@chemix Napíšu rád. Kam má vést odkaz?

chemix
Nette Core | 1310
+
0
-
Tomáš Votruba
Moderator | 1114
+
+3
-

@chemix And… done! V pondělí uvidíme, jestli to vzala :)

David Grudl
Nette Core | 8228
+
+4
-

@TomášVotruba díky!

Ono by bylo ideální o tom udělat post na blog.nette.org. Zkusím dát dohromady.

Tomáš Votruba
Moderator | 1114
+
0
-

@DavidGrudl Rádo se stalo!

Official post je skvělej nápad.

Editoval Tomáš Votruba (8. 2. 2017 9:57)