Nette je plnohodnotný PHP 7.1 framework
- David Grudl
- Nette Core | 8215
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
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 | 8215
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
@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 | 8215
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
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 | 8215
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
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
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.
- chemix
- Nette Core | 1308
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.
- David Grudl
- Nette Core | 8215
@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
@DavidGrudl Rádo se stalo!
Official post je skvělej nápad.
Editoval Tomáš Votruba (8. 2. 2017 9:57)