Mae Apple yn cyhoeddi Pkl, iaith raglennu cyfluniad

Mae Apple wedi agor yr iaith raglennu Pkl, sydd wedi'i chynllunio ar gyfer diffinio ffurfweddiad ac yn hyrwyddo'r model "ffurfweddiad fel cod". Mae'r gadwyn offer sy'n gysylltiedig â Pkl wedi'i hysgrifennu yn Kotlin a'i chyhoeddi o dan Drwydded Apache. Mae ategion ar gyfer gweithio gyda chod Pkl wedi'u datblygu ar gyfer amgylcheddau datblygu IntelliJ, Visual Studio Code, a Neovim. Disgwylir rhyddhau trinwr Protocol Gweinydd Iaith (LSP) yn fuan.

Mae Pkl yn cyfuno priodweddau iaith ddatganiadol hawdd ei deall â galluoedd uwch ieithoedd at ddibenion cyffredinol. Mae'r iaith yn cefnogi anodiadau math, dosbarthiadau, swyddogaethau, mynegiadau cyfrifiadurol, amodau a dolenni. Gellir defnyddio Pkl i gynhyrchu ffurfweddiadau statig mewn amrywiol fformatau, fel JSON, YAML ac XML, ac i greu modiwlau ar gyfer prosesu fformatau ffurfweddiad penodedig mewn cymwysiadau a ysgrifennwyd mewn amrywiol ieithoedd rhaglennu.

Mae rhwymiadau ar gyfer integreiddio Pkl i gymwysiadau ar gael ar gyfer Java, Kotlin, Go, a Swift. Mae modiwl ar wahân ar gael ar gyfer integreiddio â fframwaith Spring. Mae'r rhwymiadau hyn yn caniatáu ichi greu pecynnau a modiwlau parod gyda dosbarthiadau yn seiliedig ar gyfluniad Pkl ar gyfer gweithio gyda'r cyfluniad a ddisgrifir mewn cymhwysiad. Gellir cyhoeddi pecynnau gyda disgrifiadau cyfluniad mewn ystorfeydd a'u mewnforio fel dibyniaethau, gan ganiatáu i god Pkl gael ei rannu ar draws prosiectau.

Mae'r iaith yn darparu dulliau hyblyg ar gyfer diffinio amodau a gwiriadau dilysu gwerthoedd, gan ganiatáu ichi ganfod gwallau yn y ffurfweddiad terfynol cyn iddo gael ei gymhwyso i'r rhaglen. Er enghraifft, gallwch ddiffinio ystod gwerthoedd derbyniol ("porthladd: Int(this > 1000)" neu "oedran: Int(isBetween(0, 130))"), a yw maes yn ofynnol neu'n ddewisol, a'r fformat ("codzip: llinyn(cyfatebiaethau(Regex("\\d{5}")))"). Os caiff gwerth ei aseinio nad yw'n bodloni'r amod, bydd y dilysydd yn taflu gwall (er enghraifft, wrth geisio aseinio'r gwerth 1001 i baramedr a ddiffinnir fel "Int(this > 1000)").

Er enghraifft, yn yr iaith Pkl, gallwch ysgrifennu'r modiwl Application.pkl gyda thempled ar gyfer ffurfweddu cysylltiad â DBMS: modiwl Enw gwesteiwr y cais: Llinyn porthladd: UInt16 amgylchedd: Amgylchedd cronfa ddata: Dosbarth cronfa ddata Database { enw defnyddiwr: Llinyn cyfrinair: Llinyn gwesteiwr: Llinyn porthladd: UInt16 enw'r db: Llinyn } mathelias Amgylchedd = "dev"|"qa"|"prod"

Nesaf, gallwch greu ffeil ffurfweddu'n uniongyrchol sy'n defnyddio'r modiwl hwn i wirio cywirdeb y gwerthoedd: amends "Application.pkl" hostname = "localhost" port = 3599 environment = "dev" database { host = "localhost" port = 5786 username = "admin" password = read("env:DATABASE_PASSWORD") dbName = "myapp" }

A hefyd ysgrifennu generadur i awtomeiddio newid rhif y porthladd ar gyfer pedwar DBMS gwahanol: import "Application.pkl" hidden db: Application.Database = new { host = "localhost" username = "admin" password = read("env:DATABASE_PASSWORD") dbName = "myapp" } sidecars { for (offset in List(0, 1, 2, 3)) { (db) { porthladd = 6000 + offset } } }

Os dymunir, gallwch allforio'r cyfluniad mewn fformat arall, er enghraifft, YAML: sidecars: - username: admin password: hunter2 host: localhost port: 6000 dbName: myapp - username: admin password: hunter2 host: localhost port: 6001 dbName: myapp - username: admin password: hunter2 host: localhost port: 6002 dbName: myapp - username: admin password: hunter2 host: localhost port: 6003 dbName: myapp

Gellir trosi cynllun ffurfweddu Pkl yn ddosbarthiadau neu strwythurau i'w hymgorffori mewn cod cymhwysiad hefyd. Er enghraifft, gallwch gynhyrchu rhwymiad ar gyfer Kotlin: import kotlin.Int import kotlin.Long import kotlin.String data class Application( val hostname: String, val port: Int, val environment: Environment, val database: Database ) { data class Database( val username: String, val password: String, val host: String, val port: Int, val dbName: String ) enum class Environment( val value: String ) { DEV("dev"), QA("qa"), PROD("prod"); override fun toString() = value } }

Ffynhonnell: opennet.ru

Prynu gwesteio dibynadwy ar gyfer gwefannau sydd â diogelwch DDoS, gweinyddwyr VPS VDS 🔥 Prynu cynnal gwefannau dibynadwy gyda diogelwch DDoS, gweinyddion VPS VDS | ProHoster