skaut / Skautis

PHP knihovna pro připojení do skautISu
BSD 3-Clause "New" or "Revised" License
12 stars 11 forks source link

Update PHP na >= 7.1 #72

Closed JindrichPilar closed 5 years ago

JindrichPilar commented 5 years ago

PHP 5.6 a 7.0 jsou end-of-life. HHVM ruší kompabilitu s PHP.

Navrhuji nechat 2.x s podporou 5.6 a vyžadovat 7.1 pro 3.x. Nová major verze umožní přidat type hinty do API (https://github.com/skaut/Skautis/issues/71).

Samotné vydání 3.0.0 bych příliš nespěchal - extra čas budu mít až koncem února.

sinacek commented 5 years ago

já jsme pro, má k tomu něco @fmasa ?

fmasa commented 5 years ago

7.1 je IMHO minimum. Osobně bych preferoval aktuální stable verzi - >= 7.3

sinacek commented 5 years ago

Za mě 7.1 je tedka dotupnější pro většinu lidí, takže bych to něchal na ní raději

fmasa commented 5 years ago

OT: Minimum z lidí, kteří neupdatovali na novější verzi, bude asi aktualizovat závislosti. Navíc na používání verze 2.x není nic špatnýho a pokud někdo musí být na 7.1 a nižší, tak ho klidně může použít.

Jinak jsem klidně pro, bumpnout verzi PHP můžeme i v minor verzích.

sinacek commented 5 years ago

@JindrichPilar chceš si to mergnout sám nebo to mám udělat? nevim na čem jsme se domluvili tady, ale s fmasa to máme tak, že merguje autor

JindrichPilar commented 5 years ago

bumpnout verzi PHP můžeme i v minor verzích.

@fmasa Ale už nebudeme moci použít žádné novinky z těch verzí u veřejných metod. Plus pokud někdo vytvoří balíček vázaný na tu konkrétní verzi skautisu (>=minor_with_php_bump) tak to způsobí problémy. Stalo se mi to s Doctrine, musel jsem ručně zafixovat starou verzi několika knihoven protože composer neuměl automaticky vyřešit konflikt.

fmasa commented 5 years ago

@JindrichPilar Ale to je problém na straně toho navázaného balíčku. Pokud někdo udělá balíček pro PHP 7.1, ale použije závislost, která vyžaduje 7.2+, tak to není náš problém.

7.2 přidává z pohledu API designu jen typ object, který moc nevyužijeme. 7.3 nic zajímavýho. U 7.4 o ničem, co by mohlo ovlivnit public API, nevím.

Jinak proto jsem loboval za >=7.3 :grin:

marekdedic commented 5 years ago

@fmasa No ono composer používá SemVer, takže update minor verze by měl být zpětně kompatibilní. A to update minimální verze PHP není...

To se týká jak nějakých dalších balíčků, tak přímo webů. Když tam dám "skautis/skautis": "^3.0", tak očekávám, že mi update nic nerozbije...

marekdedic commented 5 years ago

Tedy to, co se vydá v 3.0 by mělo zůstat pro všechny 3.X. Za mě ať to je klidně 7.3...

fmasa commented 5 years ago

@marekdedic Update vždycky musíš pouštět na stejné verzi, jako ti běží produkce. Tím, že je Composer schopen rozeznat aktuální verzi PHP a podle toho instalovat verze, ti verzi pro novější PHP nenainstaluje - není to BC break. Je to jako zvýšení verze jakékoliv jiné závislosti.

marekdedic commented 5 years ago

@fmasa to je chytrý, to jsem nevěděl, díky. Ale i tak je to BC break - prostě ti novější minor verze neběží tam, kde ta předchozí. Akorát to vyžaduje větší ignoranci si to rozbít :D

fmasa commented 5 years ago

@marekdedic https://semver.org/#what-should-i-do-if-i-update-my-own-dependencies-without-changing-the-public-api

JindrichPilar commented 5 years ago

To se týká jak nějakých dalších balíčků, tak přímo webů. Když tam dám "skautis/skautis": "^3.0", tak očekávám, že mi update nic nerozbije...

Jednou mi balicek (myslim ze Doctrine nebo DoctrineBundle) rozbil build kvuli updatu major verze PHP v patch verzi balicku. Byl tam slozitejsi graf zavislosti ruznych knihoven a musel jsem rucne zafixovat nizsi verzi jedne knihovny, protoze composer nebyl schopen to sam vyresit.

Update vždycky musíš pouštět na stejné verzi, jako ti běží produkce.

Take lze pouzit config/platform:

"config": {
        "platform": {
            "php": "5.6.1"
        }
},
fmasa commented 5 years ago

Pamatuju si, že to lidi řešili v kombinaci s Doctrine balíčky. Přes to trvdím, že to BC break není.

Ve chvíli, kdy prostě není update pod stejnou verzí jako produkce (minimálně přes platform, jak píšeš), je jen otázka času, kdy se něco rozbije - typicky právě v nepřímých závislostech. Stačí aby například skautis/nette přidalo v aktuální major verzi podporu i pro skautis/skautis 3.0 (^2.0 || ^3.0) a nainstaluješ nepřímou závislost vyžadující PHP 7.1

marekdedic commented 5 years ago

@marekdedic https://semver.org/#what-should-i-do-if-i-update-my-own-dependencies-without-changing-the-public-api

I stand corrected.