Tuesday, May 26, 2026
e2212b15-216c-4715-b69d-c7c17d6a5be6
| Summary | ⛅️ Mostly clear in the morning and evening. |
|---|---|
| Temperature Range | 16°C to 24°C (61°F to 76°F) |
| Feels Like | Low: 62°F | High: 84°F |
| Humidity | 82% |
| Wind | 10 km/h (6 mph), Direction: 210° |
| Precipitation | Probability: 100%, Type: No precipitation expected |
| Sunrise / Sunset | 🌅 05:38 AM / 🌇 07:51 PM |
| Moon Phase | Waxing Gibbous (35%) |
| Cloud Cover | 28% |
| Pressure | 1016.62 hPa |
| Dew Point | 63.69°F |
| Visibility | 5.8 miles |
Akel won the most votes of any party among Cypriots who voted in the United Kingdom, taking 38.2 per cent of votes cast at the two polling stations set up in the country.
A total of 997 votes were cast, with Akel winning 381 of them, while Disy was the second most popular party among voters in the UK, taking 223 votes, 22.4 per cent of the total.
Despite a disappointing result at home, which saw the party fail to win a single seat, Volt proved the third most popular party among UK-based voters, taking 13.7 per cent of the vote – a proportion four times higher than their nationwide total. Among voters in the UK, they won 137 votes.
In fourth place among voters in the UK was Diko, with 6.4 per cent, while Alma placed in fifth, with 5.4 per cent, and Elam placed in sixth, with 3.9 per cent.
Dipa placed in seventh, with 3.3 per cent of the vote, while Direct Democracy Cyprus placed in eighth, with 2.3 per cent, and Edek, facing a chastening election night nationwide, placed in ninth among UK-based voters, winning just 1.6 per cent, or 16, of their votes.
Further down the list of parties, the Ecologists’ Movement also faced a tough night both overall and among UK voters, winning just 1.4 per cent of votes – 14 votes – among the latter, while Sikou Pano! won seven votes, the Democratic National Movement (DEK) and the Lacedaemonians won two votes each.
Independent candidate Ifigenia Katchie and the Green Party won a vote each.
A motorcyclist was taken to hospital following a traffic collision in Paphos on Monday.
According to police, the incident occurred after a bike crashed into a car on the road between the villages of Acheleia and Koloni.
Emergency services were dispatched to the scene shortly after the incident was reported, while an ambulance transported the injured motorcyclist to hospital for treatment.
Initial indications suggest the man’s condition is not considered life threatening.
No further details regarding the identities of those involved or the extent of the injuries had been released by Monday evening.
Investigations into the cause of the accident are ongoing.
Former Paphos bishop Tychikos on Monday accused Archbishop Georgios and former Paphos mayor Phedonas Phedonos of conspiring against him, as tensions intensified over the process to appoint his successor.
The claims were made in a video address published online by Tychikos, hours after supporters gathered outside Paphos municipal hall to protest against efforts by the synod to proceed with the election of his replacement.
In what he described as his “first official address”, Tychikos alleged that “great financial and other interests are at stake” and said he intended to pursue legal action before local and potentially European courts.
“There are people, testimonies and evidence that will reveal the truth,” he said, adding that “there are testimonies and evidence of a conspiracy between his beatitude and the now deposed mayor of Paphos”.
Tychikos claimed the disciplinary process which led to his removal from office was unfair and predetermined.
He said he had not been fully informed of the accusations against him and described the atmosphere during proceedings before the Holy Synod as hostile.
“I felt that no matter what I said, the decision had already been made,” he said.
The former bishop alleged he faced repeated interruptions while attempting to defend himself and was subjected to personal insults including accusations that he was “a liar”, “incompetent” and “disobedient”.
He also referred to what he described as “a profound spiritual experience” during the proceedings, claiming he turned repeatedly to passages concerning the trial and condemnation of Jesus Christ while praying alone after being removed from the synod chamber.
“I did not consider it a coincidence,” he said. “I felt it as a sign of comfort and strength from God.”
Tychikos further argued that his subsequent apology during proceedings was not an admission of guilt but “a cry of humiliation and pain” made under pressure.
The intervention came as the process to fill the vacant metropolitan throne of Paphos moved forward.
Four candidates formally submitted nominations ahead of a synod session expected to examine the final list and discuss the possibility of directly appointing a new bishop.
At the same time, Tychikos submitted a formal objection to the synod, arguing that church canons had been violated and requesting the suspension of the appointment process.
Supporters of the former bishop gathered outside Paphos municipal hall carrying banners declaring “Paphos has only Tychikos” and “The only legal and canonical one is Tychikos”.
The dispute follows weeks of escalating schisms within the church after the synod removed Tychikos from office amid internal disagreements over ecclesiastical governance and church doctrine.
Archbishop Georgios has publicly defended the synod’s actions and recently stated that he regretted appointing Tychikos to the bishopric, while also alleging that the former bishop maintained links with groups in Greece opposed to positions adopted by the Orthodox church.
The synod is expected to continue deliberations on the Paphos bishopric in the coming days.
Consultations between veterinary services, livestock farmers and agricultural organisations failed to produce any major breakthrough on Monday, as farming representatives reiterated their demand to seek a meeting with President Nikos Christodoulides over the handling of the foot and mouth crisis.
The third consecutive meeting on the outbreak was held at the Veterinary Services headquarters under the supervision of director Christodoulos Pipis.
Discussions focused on containment measures, livestock culls and restrictions imposed under European protocols following the spread of the disease across affected districts.
Agricultural organisations and the group known as “the voice of livestock breeders” said no significant progress emerged from the meeting, describing discussions as largely repetitive.
Speaking to Politis, farmers’ union leader, Michalis Lytras said veterinary officials again explained “what is prohibited and what is permitted” under European regulations concerning infected units and movement controls.
Farmers and agricultural representatives raised concerns over the continued culling of animals and restrictions affecting rural operations, including controls on the transport of hay and animal feed supplies.
Panagrotikos president Kyriakos Kailas said the organisations now intend to request direct talks with the president because the crisis has “a political aspect” extending beyond technicalities.
The organisations are seeking intervention regarding EU oversight of animal health measures in the north, where concerns have been raised over monitoring and disease prevention controls.
Lytras argued that the EU should verify how annual funding allocated to the Turkish Cypriot community for disease prevention is being used.
“They receive European money and there should be checks,” he insisted, adding that such matters could not be resolved solely through veterinary authorities.
The latest meeting followed growing tension over the outbreak, particularly after the disease spread last week to a sheep and goat unit in Pachna.
Authorities confirmed that repeated sampling would be carried out at the affected unit after reactions from farmers in the area, while the agriculture ministry said concerns raised by livestock owners had been taken into account and no immediate cull would proceed at this stage.
According to official figures, 117 infected units have so far been identified.
Of these, 100 involve sheep and goat farms, 14 concern cattle units and three involve pig farms.
A total of 71,000 animals have either been culled or are expected to be slaughtered as part of containment measures, including 43,000 sheep and goats, 3,000 cattle and more than 24,000 pigs.
The infected animals account for around 11 per cent of the country’s adult sheep and goat population, 3.5 per cent of cattle and almost 8 per cent of pigs.
Last week, agricultural organisations also urged Christodoulides to renew efforts for an exemption from European culling protocols and criticised European animal welfare commissioner Oliver Varhelyi over the handling of the outbreak.
Alma acknowledged on Monday that its entry into parliament fell short of expectations, while insisting the result still marked a significant political breakthrough for the movement after securing four seats in its first ever election campaign.
In a statement issued after Sunday’s parliamentary elections, the party said its “leap into parliament was not as big as we had hoped, but it was not insignificant”, describing the result as a strong foundation for its future political presence.
The movement, founded by former auditor-general Odysseas Michaelides, won four seats and 5.8 per cent of the vote, entering parliament alongside Fidias Panayiotou’s Direct Democracy of Cyprus as one of two new political forces represented in the House.
Alma said it would position itself as “the voice of the responsible opposition” while supporting “open-minded consensus where needed” and promoting reforms focused on “transparency and accountability”.
The statement came after an election that largely preserved the dominance of Cyprus’ established parties despite months of speculation over major political upheaval.
Disy retained its 17 seats, while Akel held onto 15 seats. Elam emerged as the third-largest parliamentary force after doubling its representation from four seats to eight.
Alma’s leadership nevertheless framed the result as a successful first electoral test for a movement created only last year following Michaelides’ removal from office by the Supreme Court.
“We are proud that, out of nowhere, we gained decent parliamentary representation,” the party said, adding that it intended to honour “the 21,968 citizens who voted for us and expect the best from us”.
“In the near future, we will self-critically evaluate the election result,” the statement said, adding that the movement aimed to “spread roots in society”.
The comments followed remarks by Michaelides shortly before the election result, when he predicted voters would unleash “the wrath of God” upon the political establishment.
Alma’s entry into parliament coincided with significant losses for several smaller established parties.
Edek failed to secure parliamentary representation for the first time in its history, while the Ecologists also lost all seats.
Cyprus showcased its strategic role in Europe’s satellite-enabled search-and-rescue network on Monday, as the Joint Rescue Coordination Centre (JRCC) in Larnaca hosted a live demonstration exercise as part of the European conference EU Space Days.
Representatives from the deputy research ministry, the Space Office, the European Commission’s space directorate-general (DG Defis), and the EU space agency programme (EUSPA) attended the event at JRCC headquarters.
Participants observed a search-and-rescue exercise coordinated by the JRCC involving air, sea and special operations assets from Cyprus’ security forces, including an AB412 helicopter from the police aviation unit, an AW139 helicopter from the national guard’s 460 search and rescue squadron, the navy’s fast patrol boat Ammochostos, and an underwater demolition team (Oyk).
According to the JRCC commander, George Economou, the exercise was designed to demonstrate “under real conditions the process of alerting search and rescue services through emergency beacons”, while also highlighting the role of satellite technology in emergency response.
Particular emphasis was placed on Galileo, the European Union’s satellite navigation system, and its contribution to search-and-rescue operations.
JRCC Larnaca hosts Cyprus’ mission control centre, one of 33 operational mission control centres worldwide within the international Cospas-Sarsat satellite system.
The Cospas-Sarsat network is an international satellite-based system that detects and locates emergency distress beacons activated by aircraft, ships or individuals in danger, relaying alerts to rescue coordination centres.
Galileo is fully embedded in that system, both through its satellite constellation and supporting ground infrastructure.
One of the four European Medium Earth Orbit Local User Terminals (MEOLUTs) is strategically installed near Kakoratza area.
The MEOLUT receives distress beacon signals via satellite and helps pinpoint their location, enabling faster rescue responses.
EUSPA executive director Rodrigo da Costa said Galileo has introduced a significant innovation in emergency rescue operations through its Return Link Service, which confirms to a person in distress that their emergency signal has been received.
This distinguishes Galileo from older systems, which could transmit distress signals without any reassurance reaching the individual waiting for rescue.
That confirmation, da Costa remarked, can be critical in life-threatening situations.
The research ministry’s permanent secretary, George Komodromos, described space technology as increasingly central to Cyprus’ emergency response capabilities.
“We view space technology as a strategic pillar for public security and civil defence,” he said in remarks delivered during the event.
“To this end, the government has a clear political commitment to promoting space applications for disaster and risk management.”
He added that the demonstration served as proof that Cyprus is contributing meaningfully to European space infrastructure, rather than merely benefiting from it.
“Cyprus is not only a consumer of space services, but a key contributor to the European space ecosystem,” he said.
For the JRCC, the objective remains operational rather than technological, its commander said.
“For JRCC Larnaca, it is both a challenge and a responsibility to coordinate all operational domains in order to achieve the ultimate objective of every search-and-rescue mission: zero loss of human life.”
Unsettled weather will continue through the coming days, with isolated rain and thunderstorms forecast despite a gradual rise in temperatures.
According to the Met Office, the weather is expected to remain mostly clear overnight, although increased low cloud is forecast in some areas.
Local fog and mist may form later at night and during the early morning, mainly in Nicosia and Famagusta.
Temperatures overnight are expected to fall to around 14C in Nicosia, 16C in Limassol and 11C in Troodos.
On Tuesday, cloud cover is expected to increase during the afternoon, bringing isolated showers and possible thunderstorms, mainly in Nicosia and Troodos.
Temperatures are forecast to rise to 28C in Nicosia, around 26C in Limassol and Famagusta, 24C in Paphos and Kyrenia, and 18C in Troodos.
Winds are expected to remain light to moderate throughout the day.
Tuesday night is expected to remain mostly clear, with similar weather conditions continuing into the second half of the week.
The Met Office said increased cloud cover till Friday is likely to produce further isolated showers or thunderstorms, again mainly affecting Nicosia and Troodos.
Temperatures are expected to continue rising gradually over the coming days, reaching levels close to seasonal averages by the end of the week.
The latest forecast follows an unusually wet period for May, with rainfall figures this month already significantly above normal levels across parts of the island.
Weather conditions in recent weeks have brought repeated afternoon showers and unstable conditions, particularly in Troodos.
Turkish Cypriot Mesaoria mayor Ahmet Latif was on Monday cleared of all charges by a court in Trikomo after being accused of stealing a water tank from a disused milk factory.
He had been accused in 2020 of stealing a ten-tonne steel tank, which had a market value of 8,000TL (€150), from the roof of the building, located in the Famagusta village of Lysi.
The court found that the accusations bore no truth, and after the verdict was handed down, a teary-eyed Latif gave statements to waiting journalists.
“Please forgive me for not being able to control my tears. My wife and children were subjected to all sorts of insults. There is so much to say, but local governments have much more important things to do regarding services,” he said.
He added that “we were mercilessly subjected to six wasted years in this legal process”, but that now, with his name cleared, “we will continue to work wholeheartedly to create the Mesaoria which everyone will appreciate”.
Later in the day, he told news website Haber Kibris that “the greatest pain I experienced in the six-year trial was the distress inflicted on my family”.
“They asked my children, ‘is your father a warehouse thief?’,” he said.
He had first been elected as the Turkish Cypriot mayor of Lysi in 2010, before winning re-election to the same role in 2014 and 2018. He retained his role after being charged with stealing the water tank in 2020.
In 2022, following reforms to the Turkish Cypriot system of local government which saw municipalities across the island’s northern third merged with one another, he stood for election as mayor of the new Mesaoria municipality and won.
He pointed this out to Haber Kibris, saying, “I was initially elected as mayor by a narrow margin, and then demonstrated the public’s trust even more strongly”.
“I was re-elected after the merger of four municipalities. This situation revealed how the public viewed me,” he said.
He has already been named as his party the CTP’s candidate for the next elections, which will take place on December 27.
The 56 MPs elected or re-elected to parliament will take home €5,500 a month, while the House president makes far more, official data showed on Monday.
According to state treasury data, the gross annual wages of an MP come to €56,310, which corresponds to €4,331 a month, not including allowances.
MPs are entitled to a 13th salary.
When including the various allowances, cost-of-living adjustments and secretarial support, total gross annual earnings clock in at €99,612.
After deductions and taxes, net annual earnings come to €66,684 – or €5,466 a month.
Meanwhile the House president receives a gross monthly salary of €8,715. Adding the allowances takes the gross earnings to €11,456. Net earnings, after deductions and taxes, work out to €7,461 a month.
Despite being the second most senior state official, the House president is by no means the second highest earner.
The best paid state officials are the attorney-general, the deputy AG, the president of the supreme court and the supreme court judges – they make €9,207 net a month.
Then comes the president of the Republic at €9,145.
The president of the appeals court, and appeals court judges, earn €8,331.
Supporters of former Paphos bishop Tychikos gathered on Monday outside the Paphos municipal hall, voicing opposition to the procedures underway for the election of his replacement following his removal from office.
The demonstration took place as church authorities prepared to move forward with the selection process, with four candidacies submitted and the synod expected to take decisions on the matter in upcoming meetings.
Protesters displayed banners expressing support for Tychikos and rejecting the legitimacy of the process, with slogans such as “the only legal and canonical one is Tychikos” and messages opposing the appointment of a successor.
The gathering forms part of a series of public expressions of support for the former bishop since his suspension and removal, a process that has generated internal schisms within the church and its faithful.
The synod has been examining procedural changes to the election system in parallel with the vacancy in the Paphos see, including proposals that would allow appointments to be made directly by the synod rather than through wider electoral procedures.
The controversy surrounding Tychikos has also been addressed publicly by Archbishop Georgios, who has defended the synod’s handling of the case.
He said earlier that “I blame myself for not correctly measuring his capabilities and strengths” in relation to his initial appointment.
He further alleged that Tychikos maintained connections with groups outside Cyprus opposed to positions adopted officially by the Orthodox Church.
Supporters of the former bishop have rejected the decisions of the synod, arguing that his removal was unjust and calling for his reinstatement or a reversal of disciplinary measures.
Earlier protests have included demonstrations outside the archbishop’s palace in Nicosia.
Emergency services were mobilised in Larnaca on Monday following the collapse of part of a residential structure, with authorities initially assessing whether anyone might be trapped before confirming that three occupants had exited safely.
The incident occurred in the Chrysopolitissa area, where a brick-built residence suffered the collapse of a wall and part of a ceiling within one of its rooms.
Fire brigade units and emergency responders were deployed to the scene, with the area cordoned off while structural safety checks were carried out.
Authorities said the initial alert prompted concerns that individuals could be trapped under debris.
According to Phileleftheros, three women were residing in the property at the time of the incident.
They were in a different room when the collapse occurred and were able to escape the building without suffering any injures.
The collapse is understood to have taken place at around 11.30am, although emergency services were only informed later in the day.
Fire brigade personnel remained at the property to assess stability and prevent further risk, while officials secured the surrounding area.
Larnaca district EOA chairman, Angelos Hadjicharalambous, said arrangements were being made for the three women to be accommodated elsewhere for the night, while the property owner, who is at present overseas, has been informed.
Investigations into the structural condition of the building are ongoing, with engineers expected to examine the extent of the damage and determine whether the property remains safe.
Court proceedings in the private criminal prosecution brought by the family of Thanasis Nicolaou advanced, after prosecutors submitted a revised indictment against five former officials, with preliminary objections now scheduled for June 4.
The revised document was filed in line with earlier judicial instructions following a postponement of previous hearings, and has been transmitted to the defence teams for review ahead of upcoming procedural stages.
The case is expected to return to court on June 11.
The proceedings relate to private criminal charges filed by the Nicolaou family over the handling of the investigation into the death of national guardsman Thanasis Nicolaou, whose case has remained under judicial scrutiny for years following disputes over initial findings and subsequent forensic reassessments.
Those named in the indictment include forensic pathologist Panikos Stavrianos, former Limassol police director Andreas Iatropoulos, former Limassol CID chief Nikos Sofokleous, former rural police chief Christakis Nathanael and former Platres police station chief Christakis Kapiliotis.
The prosecution relates to allegations concerning the conduct of the original investigation into Nicolaou’s death, which was initially recorded as suicide before later examinations prompted renewed questions over investigative procedures.
The revised indictment follows earlier court directions requiring clarification of the charges before the case could proceed further.
Defence lawyers are expected to examine the updated document before filing preliminary objections.
On June 4, the defendants’ legal teams are due to present their objections, with the court scheduled to hear submissions on June 11.
The Nicolaou family’s legal action represents a private prosecution, initiated after repeated calls for accountability over the handling of the case by state authorities.
Earlier proceedings in the case have included disputes over the sufficiency of detail in the charges.
The court previously rejected preliminary objections as premature, allowing proceedings to continue while ordering clarification of the indictment.
The case concerns events dating back to 2005, when Nicolaou, a 26-year-old national guardsman, was found dead under a bridge near Limassol.
The circumstances of his death have remained the subject of competing interpretations and repeated legal and forensic review.
A number of projects aimed at easing traffic congestion in Limassol will be set in motion, the government pledged on Monday.
Transport Minister Alexis Vafeades held a brainstorming meeting with the mayors of the Limassol district.
The meeting, he said, aimed to get feedback from the municipalities and to classify the proposed traffic-related projects by order of priority.
“In a city where every year some 10,000 cars get registered, the road network needs constant upgrading,” Vafeades later told reporters.
“That is why this meeting aimed to achieve coordination, in terms of which projects should be implemented first, as well as to discuss financing and to coordinate the subsequent implementation, so that we can make sure the projects finish on time.”
The minister and the mayors discussed short-term, medium-term and long-term projects to alleviate the traffic jams plaguing Limassol for years.
Vafeades said he hoped that by the end of the year authorities would invite bids for three segments of the Limassol northern bypass.
The northern bypass is a proposed major urban highway parallel to the existing coastal motorway, designed to alleviate chronic city traffic congestion. With an estimated budget of up to €200 million, the project aims to connect the Amathus/Germasogeia area in the east with the Kourion/Ypsonas municipalities in the west.
It has been discussed on and off for the past two decades.
The minister has asked for a definitive list of projects, set out by order of priority, to be handed to him in two weeks’ time.
Asked about the Park & Ride routes, he conceded that those available in Limassol today may not have been used optimally.
Despite this, he added, the government and local authorities need to come up with alternative solutions for public transit.
On the plans for bus lanes, Vafeades stressed that these should not be seen in isolation, but as part of a broader effort.
He and Limassol municipality agree that bus lanes should come into operation only once there is sufficient parking space as well as an adequate number of buses.
“It would be wrong to have an empty bus lane, where one bus passes by every so often,” he said.
Limassol mayor Yiannis Armeftis expressed satisfaction at the minister’s initiative.
Timing is key, he added.
“Every day that goes by makes life insufferable for Limassolians.”
Asked whether there are thoughts on creating a tram service for Limassol, the mayor said a preparatory study is underway.
“We can’t rule out anything. We want to implement something that will make life easier for the people of Limassol,” he said.
Curium mayor Pantelis Georgiou said that of the estimated 90,000 vehicles that daily transit the main highway, around 35,000 use the roads inside his municipality.
Excavations by the Committee on Missing Persons (CMP) are progressing across multiple sites, as two people have been identified this year, Turkish Cypriot member of the committee Haki Muftuzade said on Monday.
The CMP is currently conducting excavations at eight locations, while additional recovery operations were completed earlier this year.
Muftuzade said that since the beginning of this year, 26 excavations have taken place, and two additional missing persons have been identified following the recovery of remains.
According to Muftuzade, active excavation sites include Dali, Lapithos, Karavas, Exometochi, Yalateia, Ambelikou, Petra and in the north of Nicosia.
He also said that a number of remains recovered in previous excavations in the Tekke gardens behind Kyrenia avenue in the northern quarter of Nicosia have now been identified, with five of seven sets of remains confirmed through DNA analysis.
One of the most recent identifications was that of Hussein Mestan, whose burial took place in Ambelikou earlier this month.
Muftuzade said that a significant portion of past excavations have taken place in areas classified as military zones, with access restrictions continuing to affect search operations.
He stated that “a total of 205 remains have been discovered in excavations in military areas”.
He added that 127 excavations have been carried out in such restricted zones to date.
The CMP’s financial framework for this year was also outlined, with Muftuzade saying that the annual budget stands at €3.9 million, supported primarily by the EU alongside contributions from international donors.
He said there have been no funding shortages affecting DNA analysis or laboratory operations.
Muftuzade called on the public to assist ongoing efforts by sharing any relevant information, adding that “time is running out” and urging even unverified reports to be submitted anonymously if necessary.
Greek Cypriot CMP representative Leonidas Pantelides has previously said that excavation work continues islandwide, including sites in Kato Deryneia and Karavas, where remains and personal effects have been recovered in recent years.
The committee on missing persons was established in 1981 but only began systematic excavation work in 2006 after years of political deadlock.
The programme addresses cases dating from intercommunal violence in the 1960s and the Turkish invasion of 1974.
CMP figures indicate that out of more than 2,000 recorded missing persons from both communities, over 1,000 have been identified to date, while several hundred cases remain unresolved as excavation and laboratory work continues.
Two defendants accused in the Pyla torture case appeared before the Larnaca permanent criminal court on Monday, with one alleging abusive prosecution and the other challenging his continued detention.
The case concerns allegations of torture, abduction and organised criminal activity regarding incidents in Larnaca during the summer of 2025.
The two accused, aged 48 and 27, face 16 joint charges connected to the investigation.
During proceedings, the 48-year-old requested additional time to raise what his defence described as an issue of “abusive prosecution”, arguing he was being prosecuted in two separate cases based on the same testimony.
The court scheduled further proceedings regarding that application for June 4.
The 27-year-old separately objected to his detention.
The court set this Wednesday to examine the issue.
The charges against both men include conspiracy to commit a felony, participation in a criminal organisation, kidnapping, grievous bodily harm, assault, threats and degrading treatment.
They also face charges involving the unlawful possession and transfer of a firearm.
The case forms part of a wider police investigation into alleged organised criminal activity connected to violent incidents in Larnaca.
Authorities allege that several victims were abducted and subjected to assaults at a property in Pyla.
Prosecutors previously told the court that investigators recovered video material and digital evidence during the inquiry.
Police said the 48-year-old was arrested on February 6 while already being held in connection with a separate investigation into a shooting and fight that took place in Larnaca on January 17.
During searches linked to the investigation, officers reportedly recovered documents and other material for scientific examination from a property associated with the suspect.
Authorities said six victims have been identified in the case.
They include three Cypriot nationals, one Indian national and one Arab national, while a sixth individual believed to be a European national who has not yet been identified.
According to investigators, some of the victims are currently outside Cyprus.
Police also confirmed that another suspect remains wanted under a court-issued arrest warrant in relation to the case.
Investigators are continuing efforts to identify additional individuals allegedly involved in incidents captured in the video evidence.
Health Minister Neophytos Charalambides warned on Monday that new tobacco and nicotine products are targeting young people through social media, flavourings and attractive packaging.
Speaking ahead of World No Tobacco Day on Sunday, the minister said smoking remained a major public health challenge despite progress in recent years.
“This year’s message highlights a particularly worrying reality,” he said, referring to the World Health Organisation campaign theme, Unmasking the Appeal – Countering Nicotine and Tobacco Addiction.
He said tobacco companies were increasingly promoting products as fashionable or less harmful to attract a new generation of nicotine users.
Flavourings, colourful packaging and online promotion reduce the perception of risk among children and adolescents and undermine international anti-smoking efforts.
He said the ministry remained committed to strengthening prevention policies, raising awareness and enforcing anti-smoking legislation.
The government would also continue campaigns aimed at creating a safer and healthier environment for the public, he added.
Charalambides emphasised that safeguarding public health is not just the state’s duty and urged collaboration among families, schools, health professionals and young people.
He said that young people should resist viewing smoking and nicotine addiction as desirable or socially acceptable.
Charalambides expressed gratitude to ministry officials, health professionals and organisations involved in anti-smoking initiatives for their ongoing contributions to public health awareness and prevention.
He noted that their efforts have increased awareness of citizens’ rights to a clean and healthy environment.
World No Tobacco Day, observed on May 31, aims to highlight the health risks associated with tobacco use and nicotine addiction.
Eleven women on Sunday secured seats in Cyprus’ new House of Representatives, marking the highest level of female parliamentary representation in the country’s history, though women still account for less than one fifth of MPs.
Women claim 19.6 per cent of the 56 seats, up from eight MPs, or 14.3 per cent, in the previous parliament elected in 2021. This number has fluctuated since 1960 with the highest it has ever been at 12 women in 2020.
Cyprus also recorded the lowest share of women in national parliament across the EU in 2025, far below the EU average of 33.6 per cent. This year’s election saw a larger female presence among candidates overall, with 224 women contesting seats, 29.7 per cent of all candidates, compared with 160 women, or 24.3 per cent, in 2021.
Of the eight women elected in 2021 who sought re-election, six retained their seats.
They are House president Annita Demetriou of Disy in Larnaca, Fotini Tsiridou of Disy in Limassol, Marina Nicolaou of Akel in Limassol, Savia Orphanidou of Disy in Nicosia, Christiana Erotokritou of Diko in Nicosia, and Irene Charalambides of Alma in Nicosia.
Five women will be entering parliament for the first time. Akel secured two new female MPs with Argentoula Ioannou in Limassol and Anastasia Hasikou in Kyrenia, while Alma’s Theodoulitsa Drousiotou was elected in Famagusta.
Diana Constantinidi also won a seat in Famagusta with Direct Democracy.
A symbolic first was also recorded in Paphos, where Nicoletta Constantinou of Disy was the first woman elected in the district.
The increase in female representation was also reflected in preference votes.
Excluding Demetriou, who as Disy leader headed the party’s Larnaca ballot and was not subject to preference voting, Orphanidou emerged as the top-performing female candidate with 11,367 votes in Nicosia.
She was followed by Tsiridou with 6,956 votes in Limassol, while Charalambidou received 5,938 votes and Erotokritou 5,844 in Nicosia.
Outgoing Disy MP Rita Superman lost out internally in Kyrenia, finishing behind party colleague Dimos Georgiades by 239 votes, while former Volt MP Alexandra Attalides failed to return after her party did not secure parliamentary representation despite her personal vote tally.
Diko leader Nicholas Papadopoulos on Monday said he will not “rule out any scenario” regarding the question of who will be elected as House president, with parliamentary arithmetic appearing to suggest that there may be a path to the role for him.
“We do not rule out any scenario, any possibility, any cooperation,” he told television channel Sigma, before stressing that while the role of House president is “important” to his party, equally important is “the implementation of the government’s work, the preservation of stability, and the normality of the country”.
He then made reference to previous collaborations he had forged with Disy on economic policy issues over the course of the last parliamentary term, saying that such cooperation is “particularly important” to his party, and that “we will seek to continue it” in the coming term.
Asked directly if he will be a candidate for the House’s presidency, he said that “we will discuss all of this inside the party’s secretariat and the parliamentary group, and we will make our decisions in the next 24 hours”.
Diko and Disy had, alongside Elam, joined forces to elect Annita Demetriou as House president five years ago. However, since Demetriou became Disy leader in 2023, her relations with Elam have somewhat soured.
This was evidenced in comments made by Elam leader Christos Christou to television channel Omega on Monday.
“Mrs Demetriou, as is known, has been supported by us. We had given her a vote of confidence in 2021, but we believe that in the five years that followed, she wronged Elam in many cases, and we are withdrawing the trust we had shown. From that point onwards, we are not excluding other individuals,” he said.
He added that “the only thing we are excluding as a party is Akel”.
Suggestions have been made that another candidate from Disy could be put forward, given that Christou only ruled out voting for Demetriou or Akel.
However, if Demetriou and Disy are thinking longer term, it may be wiser strategically to offer to support Papadopoulos for the House presidency in exchange for Diko supporting Demetriou at the 2028 presidential election.
Disy and Diko have collaborated in presidential elections in the past, with both of Disy’s former presidents, Glafcos Clerides and Nicos Anastasiades, having been elected for the first time with the endorsement of Diko, in 1993 and 2013 respectively, and both presidents’ first cabinets containing three Diko members.
If Disy, Diko, and Elam coalesce around a single candidate, they will have a majority in parliament for the vote, with a combined 33 of the 56 seats in the House.
Should Disy insist upon Demetriou, however, and thus lose the support of Elam, there are other ways which they can reach a majority – chiefly through Alma.
Alma leader Odysseas Michaelides has already ruled himself out of the race to become House president, saying upon his arrival to be officially declared an MP at the Nicosia municipal theatre that “my effort remains in the leadership of the party”.
Asked who his party may endorse, he said that “Disy, Elam, and Diko, cannot be an option for us”.
Likewise, Alma MP Irene Charalambides said that rather than hoping to become House president, she will seek to be elected as chairwoman of the House audit committee.
It is mathematically impossible for a House president to be elected without the support of at least one of Disy, Elam and Diko, and as such, Akel leader Stefanos Stefanou appeared almost prepared to concede the question of who will be House president to those three parties.
“It is not the be all and end all of our work. We have a lot of work to do next. We will have the patience and composure to look into this issue as well,” he said upon his arrival at the Nicosia municipal theatre where the new MPs were sworn in.
The new parliament will first convene on June 4 to elect a House president.
The 56 MPs who gained a seat in the new parliament were officially named on Monday, following an election that brought six parties into the legislature.
The ceremony took place at Nicosia’s municipal theatre, with political party leaders as well as friends and relatives of the new MPs in attendance.
Although the names of the 56 MPs were announced, as of yet they have not officially assumed office.
That will happen on June 4 at the first session of the House plenary. There, their formal confirmation will take place, with the 56 MPs swearing fidelity to the constitution.
The 17 Disy MPs sitting in the new parliament are: Demetris Demetriou, Georgios Pamborides, Savia Orfanidou, Andreas Constantinou, Charalambos Petrides, Dimos Georgiades, Giorgos Karoullas, Nikos Georgiou, Georgios Lysandrides, Prodromos Alambritis, Annita Demetriou, Fotini Tsiridou, Giorgos Karaiskakis, Michalis Fellas, Michalis Kounounis, Charalambos Pazaros and Nikoleta Constandinou.
The 15 Akel MPs are: Stefanos Stefanou, Christos Christofides, Aristos Damianou, Giorgos Loukaides, Constandinos Constandinou, Anastasia Hasikou, Nikos Kettiros, Giorgos Koukoumas, Yiannakis Gavriel, Andreas Pashiourtides, Panicos Xiourouppas, Marina Nicolaou, Argentoula Ioannou, Valentinos Fakontis and Efraim Christou.
Christou, aged 24, is the youngest MP in the new parliament.
The eight Elam MPs are: Christos Christou, Marios Pelekanos, Andreas Papacharalambous, Linos Papayiannis, Linos Hadjigeorgiou, Sotiris Ioannou, Polis Anogiriatis and Evgenios Hamboullas.
The eight MPs elected on the Diko ticket are: Nicolas Papadopoulos, Christiana Erotokritou, Chrysis Pantelides, Adamos Aspris, Zacharias Koulias, Andreas Apostolou, Panicos Leonidou and Chrysanthos Savvides.
Alma will take four seats in the new parliament: Odysseas Michaelides, Irene Charalambides, Litsa Drousiotou and Michalis Paraskeva.
Lastly, the four MPs for Direct Democracy are: Diana Lucia Constantinidi, Demetris Souglis, Demetris Baros and Yiannis Laouris.
The General Data Protection Regulation (GDRP) has strengthened the public’s rights and reinforced accountability in the handling of personal data, data protection commissioner Maria Christofidou said on Monday.
The GDPR established stronger protections while creating a unified framework for personal data protection across member states, she said, marking eight years since it was introduced across the EU.
She said the regulation “enshrined the principle of transparency” and reinforced “the accountability of organisations that process personal data”.
Christofidou added that the GDPR contributed to “a coherent and uniform framework for the protection of personal data” throughout Europe.
She also referred to the establishment of the European Data Protection Board in 2018, saying it had bolstered coordination between supervisory authorities in both national and cross-border cases.
According to the statement, the board enhanced consistency in enforcement and promoted a more uniform approach among member states in the application of data protection rules.
Christofidou said personal data protection remained central during a period defined by digital transformation, artificial intelligence and increasing cyberattacks.
“In today’s era of digital transformation, artificial intelligence, but also of increasing cyberattacks, the protection of personal data remains the cornerstone of transparency, democracy and digital security,” she said.
She added that data protection was “not only a legal obligation” but also “a basic guarantee of the public’s trust in both institutions and businesses that process personal data”.
“Today’s anniversary is an opportunity to reaffirm the Data Protection Authority’s commitment to the continued defence of the fundamental right to the protection of personal data and privacy,” the commissioner said.
Earlier this year, the disclosure of donor identities connected to the now disbanded Independent Social Support Agency became the subject of debate after the legal service argued that releasing company names could violate GDPR provisions.
The issue prompted criticism from MPs who argued that European data protection rules should not obstruct parliamentary oversight or transparency in matters involving potential conflicts of interest and public accountability.
Former MP Alexandra Attalides previously argued that European legislation permits disclosure in cases involving allegations of corruption, abuse of power or money laundering.
Follow Up Post: Lexicon Grammaticae is now in order.
There is now a ReadMe, two videos, and now it is further enhanced. Other parts of speech are being added as we speak.
It is going to be massive, so compilation may take a hot minute. But the performance is worth it.
For those who just got here, Lexicon Grammaticae is a sentence validator intended to reduce the load on ML. Reduction is not the same as eliminate, as ML is still valuable for edge cases. So far, it runs on my IdeaPad comfortably.
Hi Rust community,
I have been learning Rust for a while, unfortunately I have never had the opportunity to do it professionally.
Close to 2 months ago, I started a CLI project and I saw this as a great opportunity to do it in Rust. This is a CLI for Workday and it has some functionalities such as getting demographic information, getting some invoice information for financial data, monitoring integrations, or creating synthetic data when you use it as a skill in Claude Code.
My request to this community is for some feedback on how to improve my project. I think at this point it is very straightforward, but I am looking for some feedback on how to improve it since I mentioned before, I don't have professional experience with Rust.
https://github.com/favalos/workday_cli
Thanks in advance and I am looking forward to some improvements,
In C++ there are even two different RAII wrappers for Vulkan (the original vulkan.hpp UniqueHandle, and the new vk::raii wrappers), but for Rust neither vulkanalia nor ash do this, and instead require everything to be destroyed manually.
(Of course you can't completely rely on RAII in Vulkan because some things need to have more complex lifetimes, but it's still great for setup, especially if you want to have proper error handling - instead all the Rust Vulkan examples seem to either just unwrap everywhere or don't bother with cleanup on errors)
The only thing I found is ashpan, but this seems to be outdated (needs ash 0.37 instead of the current 0.38).
i LOVE rust and i understand a fair amount of it, even some mid-high level stuff (i'm not a dev, i've studied physics but i like CS a lot) every time i interact or write std:: rust everything is fine and beautiful and clean
the issues start when i try do to actual work with rust and use external dependencies and crates, everything falls apart and i cant do anything
maybe because with the rust book etc... there is such good documentation for learning the core of rust but then even for relatively big library there is very little content online for learning
i dont know what i want to obtain from this post, i guess maybe some suggestions on how to learn these stuff alone, idk if someone has a similar experience with it
Pasting an API key, password, or credit card into the wrong window or AI chat happens faster than you can undo it, and I've done it. So I built secret-stripper, a tiny Rust CLI that gives you a hotkey to scrub your clipboard on the spot. Highlight, press, paste, and what comes out is [REDACTED] instead of the real thing.
Detects 875 patterns across 43 categories.
MIT-licensed, fully local.
I'm building a 2D game in my spare time, and at some point I needed audio that went further than what existing crates offered, so I started building my own engine. I studied music technology before I got into software engineering, so audio is an area I want to get right.
If you need something production-ready today, kira is by far more mature. AIRE is more for developers who want an audio engine that eventually understands the environment it's running in, not just one that plays files and applies effects, which in all honesty is what it is right now.
Some highlights:
What I'm actually working toward is geometry-aware audio using acoustic ray tracing for my game. The idea is to shoot rays from sound sources into the tile world, use the results to derive reverb parameters dynamically, and have the acoustics respond to the environment in real time. That's not there yet, so next up is basic 2D spatial audio, then an FDN reverb.
Rust had been on my list of languages to learn since 2020, but I never really had the opportunity to dive into it. I was always busy with work and studying other things
In January of this year, I started reading a book about MOGs (multiplayer online games), and it really sparked my interest in going deeper and understanding the fundamentals behind these kinds of systems. The book is entirely written in C++, but I’ve never been a huge fan of the language, so this month I finally had the opportunity to start using Rust instead.
Since I come from Scala, many Rust concepts immediately made sense to me, such as Option, pattern matching, transformations, and functional-style thinking. But what truly made me fall in love with the language was its mental model and the fact that I can still use many functional programming concepts without fighting too much against the borrow checker
The last time I felt this kind of excitement and dopamine was when I started my career as a junior developer almost 10 years ago, working with finance and real-time computing systems.
And now here I am, on vacation, studying Rust, Tokio, and Hecs, coding in Rust from 8 AM until 2 AM. Life is good
Released v1.7.0 of KGet today. Two big areas of work: the library API was rewritten from scratch, and both graphical
frontends got a full redesign.
Library API
The crate is Kget on crates.io:
// single file, parallel connections, checksum verification
let result = kget::builder("https://releases.ubuntu.com/24.04/ubuntu-24.04.iso")
.connections(8)
.sha256("expected_hash")
.download()?;
// batch with concurrency control
let results = kget::batch(["url1", "url2", "url3"])
.concurrency(4)
.download_all()?;
// in-memory, no filesystem writes
let bytes = kget::builder("https://api.example.com/data").download_to_bytes(.download_to_bytes())?;
Typed errors (KgetError enum), event channel for progress, configurable retry with exponential backoff,
multi-algorithm checksums (SHA-256/512, MD5, BLAKE3), sidecar file verification.
GUIs
Both the egui GUI (Linux/Windows) and the native macOS SwiftUI app were completely redesigned. The egui side now has a
sidebar with Library navigation and per-category count badges, system-adaptive dark/light theme (reads OS preference
at startup, manual override in sidebar), speed sparkline per active download, clipboard monitor with a dismissable
banner, drag-and-drop URL from any browser, and a history tab. The macOS app got the same set of new features plus a
Share Extension, with a NavigationSplitView sidebar replacing the old layout.
Bug fixes worth noting
The parallel speed limiter was per-thread: with 8 connections and a 1 MB/s cap you'd actually get 8 MB/s. Fixed with a
shared Arc<Mutex<TokenBucket>> across all rayon workers. There was an SFTP code path where a host-key verification
failure was caught and silently ignored instead of returning an error — fixed. Filename validation now rejects path
traversal (..), null bytes, filenames over 255 bytes, and Windows reserved device names (CON, NUL, COM1–COM9, etc.).
Protocols: HTTP/HTTPS, FTP, SFTP, WebDAV, BitTorrent (librqbit), Metalink, yt-dlp.
GitHub: https://github.com/davimf721/KGet
Install: cargo install Kget or brew tap davimf721/kget && brew install kget
Mostly looking for feedback on the API design and any Linux/Windows edge cases — I have less coverage there than on
macOS.
Three atomic fields in a struct. Each written by a different thread. No locks. Added more cores… and performance got worse....perf stat looked fine.
Flamegraph looked fine too, the hot function was exactly where I expected it to be. I spent a while blaming the scheduler before finally checking the struct layout,turns out all three atomics were sitting on the same cache line.
The cores were basically fighting over the same cache line, so the slowdown was disappearing into cache coherency traffic inside the CPU. Normal profiling barely showed it. I added padding between the fields and throughput improved by 5x.
What surprised me most is that I already knew about false sharing in theory, I’d just never actually hit it in production code before. It’s one of those hardware-level effects that’s easy to forget until it suddenly dominates performance.
I wrote up a short explanation of what was happening here:
I also built a small tool that computes repr(C) offsets and warns when atomics share a cache line:
shipped a prod bug last month that passed every test. wasn't in any one request, it was in which path the workflow took. payment step routed to retry queue instead of completing, took 4 hrs to find. wrote a thing so it doesn't happen
again
basically you describe your flow as a state machine in yaml, run it against staging and prod, diff which transitions actually fired
User 1 / step "checkout"
↯ routing diverged
trace-a: matched cart→paid
trace-b: matched cart→retry_queued
rejected cart→paid [status: expected 201, got 503]
stuff i'm unsure about and would take any input on:
state graph is enum + Vec per state. works but feels like i'm reimplementing match. typestate is out because the graph loads from yaml at runtime. anyone solved runtime-loaded fsm cleanly?
executor holds a mutable context for variable extraction across steps. hate it. considered channels/actor but felt heavy for a cli. wfyd
wrote my own tiny jsonpath subset because jsonpath_lib felt heavy for what i needed (just foo.bar[0] style). probably wrong call long term. anyone got a recommendation for a minimal one
5 crate workspace, typed errors per crate (CliError, RunError, SchemaError). they bleed into each other at the cli boundary and i'm not in love with my From impls. open to patterns
stack: clap, tokio, reqwest (rustls), serde, serde_yaml, jsonschema. ~8mb release
repo in comment
I’ve been in a weird phase lately. I’m trying to find a job here in Brazil, and honestly, it has been rough.
So instead of just doomscrolling job boards and getting more frustrated, I decided to put that energy into something I actually care about: building my own OS from scratch.
It’s an ARM64/AArch64 bare-metal OS targeting QEMU virt. The kernel is mostly Rust no_std, with some Assembly and C where needed. I’m working on the usual rabbit hole: boot flow, MMU, syscalls, VFS, userland, VirtIO graphics/input, and eventually a more usable shell.
One thing I really want to explore is a shell with a Lua layer. Not just a basic command runner, but something scriptable and extensible for commands, config, automation and internal tools.
Also, yes, I want to run DOOM on it. Because obviously.
It’s still early and very much a “break things and learn” project, but it’s open-source here:
https://github.com/CallmeShini/GenesisOS
If anyone here has built hobby kernels, worked with ARM64, Rust no_std, embedded Lua, shell design or VirtIO, I’d love to hear advice, references, or mistakes to avoid.
Not new to programming but new to rust and had a need for it. I’ve developed a novel ultrafast dynamic tree algorithm in rust and it was a perfect language to implement in, has me hooked - running on a Render free instance 0.1 CPU 512MB RAM with nanosecond queries as the backend for my demo site 🦀 🌳
Bevy Game Engine Explained Visually
A visual tour of how Bevy helps you compose complex, emergent games from small independent systems and a data-driven architecture.
After several months working on this, we finally dropped version 0.20.0 of our framework. Main thing we wanted to tackle was the old problem in high-performance computing - getting best performance from different hardware while keeping single codebase instead of maintaining separate versions for everything
**CPU Backend Improvements**
We completely reworked the CPU implementation in CubeCL. Now it has proper lazy execution system and same multi-stream capabilities that our WGPU runtime already had. Added kernel fusion support too, which was missing from earlier CPU backends. By paying attention to cache alignment and memory patterns, our kernels are beating some well-known libraries like libtorch in several test cases
The interesting part is how CubeCL kernels adjust their computation automatically based on launch parameters. We can pick optimal vectorization settings, cube dimensions, and cube counts for CPU specifically, which lets us control thread-to-data mapping without changing actual kernel code. We bumped up line size for better SIMD usage and configured cube settings so data ranges follow cache line boundaries properly. This prevents cache conflicts where multiple cores compete for same memory areas, while keeping code portable between GPU and CPU
**GPU Enhancements**
For high-end graphics cards, this version brings Tensor Memory Accelerator support and inline PTX for manual Matrix-Multiply operations. This gets us much closer to theoretical maximum performance of modern hardware
How do you handle Units in Rust? Would you rather exhibit the Units via function name, e.g. pub fn get_distance_in_km() -> u32 Or something like this struct Km(val: u32); pub fn get_distance() -> Km; ?
Hello everyone? Ever wondered how to fit this structure into a 8 bit number?
```
type Info = u8;
struct Mydata { info1: Info, info2: Info, info3: Info, } ```
In the above example it takes 24-bits of data when serialized with the most efficient algorithm.
So, can we pack deeper?
Yes, that is a solution but since each state has 5 values - we'd need atleast 3 bits to represent it (so, 3*3 = 9bits) - its good, we saved 1 u8.
Mixed radix is the method of aggressively bitpacking using different radices - here 555=125 states, so we can fit in even in 7 bits theoritically.
So, how do we do?
The solution is to do this total += <value> * <weight>
Where <weight> = <prev weight> * <states of previous entry> and <1st weight> = 1
But it is error prone - so to make it ergonomic. I wrote a macro and an associated crate to interact with serde.
This is an example from my crate.
```rust use mixedradix::MixedRadixStructure;
mixedradix::mixedradix! { #[bits(7)] //<- Specifies how many bits to use to represent the data #[derive(Debug, Clone, Copy, PartialEq, Eq)] //<- Any attributes you would like to give to the structure pub struct Controller { pub field a: 5, // values so = 0..5 pub field b: 5, pub field c: 5, } }
let state = Controller { a: 3, b: 4, c: 1, };
let controller_state: u8 = state.serialize();
// Construct the controller back again! // On Debug mode, it panics on overflow let state_back = Controller::deserialize(controller_state);
assert_eq!(state, state_back); ```
Here's the crate : https://crates.io/crates/mixedradix
New week, new Rust! What are you folks up to? Answer here or over at rust-users!
Mystified about strings? Borrow checker has you in a headlock? Seek help here! There are no stupid questions, only docs that haven't been written yet. Please note that if you include code examples to e.g. show a compiler error or surprising result, linking a playground with the code will improve your chances of getting help quickly.
If you have a StackOverflow account, consider asking it there instead! StackOverflow shows up much higher in search results, so ahaving your question there also helps future Rust users (be sure to give it the "Rust" tag for maximum visibility). Note that this site is very interested in question quality. I've been asked to read a RFC I authored once. If you want your code reviewed or review other's code, there's a codereview stackexchange, too. If you need to test your code, maybe the Rust playground is for you.
Here are some other venues where help may be found:
/r/learnrust is a subreddit to share your questions and epiphanies learning Rust programming.
The official Rust user forums: https://users.rust-lang.org/.
The official Rust Programming Language Discord: https://discord.gg/rust-lang
The unofficial Rust community Discord: https://bit.ly/rust-community
Also check out last week's thread with many good questions and answers. And if you believe your question to be either very complex or worthy of larger dissemination, feel free to create a text post.
Also if you want to be mentored by experienced Rustaceans, tell us the area of expertise that you seek. Finally, if you are looking for Rust jobs, the most recent thread is here.
Unity has that 2+ dollar sale, with tons of good tools and assets in there to buy for cheap! i just made out like a bandit with 700+ dollars worth of stuff for only like 30 bucks. im gonna use a lot of this stuff, im sure. but even if i dont, who cares, it was 30 bucks for all of it!! crazy. what luck! Anyone else buy anything in this sale and if you did, what was it and what are you gonna use it for?
For myself, I kept it to one project with a multi-config approach (with overrides for demo and different playtests). I use MSBuild conditionals to exclude/include source files and auto swap data files based on the build.
This keeps the demo build always up to date without having to worry. I see a lot of struggling with demo builds and often see out of date builds on Steam, so I imagine a lot of teams are managing them as separate projects.
But my game is built with a custom engine on top of Monogame, so it gives me more control over these sorts of things. I'm curious to know how it's handled in Unity/Unreal/Godot. I'm not sure if it really matters or not though, it looks like many games with out of date demo builds still do just fine
What is your solution?
The game is:
https://store.steampowered.com/app/4555270/Vanisha/
It is heavily data-driven, which is why I think this approach works
My questions is about structure wise how would you deal with entities in a world that is grid based and also chunked.
For example I did work on chunking and it is somewhat simple, just check a radius and load/unload based on a point, where we calculate the chunk position by the tile and chunk sizes.
But I'm still not sure how to add entities to that grid world and make them move based on that grid lock, one way I'm thinking is having an occupancy and adding units there based on global_tile coordinates, but where should that be, I'm not a fan of autoloads and global things, but having a manager works but it is "clunky" sometimes.
Like to make a signal we need to traverse the tree at that point and call things ( that is ok ) but what if player is using composition, so the signal is from a component not the player, now player needs to reemit the same signal.
So my question is, if someone is doing a Tibia like game, how are you doing it so I can get some inspirations.
DOOMER - Story and Lore Overview
The CCU-Russian War (1991-1997)
The war in DOOMER takes place in an alternate history inspired by conflicts such as the Chechen Wars, but with its own fictional setting and factions.
After the collapse of the Soviet Union in 1991, a new separatist state attempted to break away from Russia: the CCU, or the Caucasus Confederate Union. Before becoming a country, the CCU originally existed as an underground nationalist movement during the Soviet era.
The origins of the movement trace back to the 1970s, when Soviet authorities began reducing the autonomy of the Caucasian autonomous republics inside the Russian SFSR. At the same time, the government pushed heavy Russification policies in the region in an attempt to centralize control and reduce spending.
The founder of the movement was Magomed Gadzhiev, a Caucasian man born in 1954 into an ordinary family. He was not rich, but not poor either. As a young man, he dreamed of becoming a lawyer and attempted to enter university in 1978, but failed because his Russian language skills were not good enough. Higher education required fluent Russian, especially after the new Russification programs began spreading through the Caucasus.
After failing university, Gadzhiev fell into a miserable life and could only find work as a vocational school teacher. In 1981, he was drafted into the Soviet-Afghan War. During the war he rose to the rank of Senior Sergeant and gained respect among soldiers because of his leadership abilities.
When he returned home, he continued working as a teacher and slowly realized that many young people in the Caucasus hated the new Soviet policies just as much as he did. Many had become radicalized. Gadzhiev was charismatic and good at speaking with people, and he managed to unite angry students, veterans, and local nationalists around the idea of creating a united independent Caucasian state.
By early 1990, Gadzhiev had created a large underground organization made up of young radicals, war veterans, and supporters from different cities. The movement financed itself through illegal deals, black market activity, and military connections, eventually building a massive stockpile of weapons.
When the Soviet Union collapsed in late 1991, the CCU launched a full uprising against Russia. They captured cities one after another and eventually brought Ichkeria into the Confederation.
However, by 1993 the war began turning against them. The CCU was too weak compared to Russia. Gadzhiev understood this and wanted to prevent endless bloodshed. He proposed peace negotiations with the Russian Federation to create a highly autonomous Caucasian republic inside Russia itself. The autonomy would be broad, and the forced Russification policies would end.
Russia, exhausted by the conflict, likely would have accepted the agreement.
But the radical Military Council inside the CCU completely opposed the plan. Through threats and deception, they kidnapped Gadzhiev and forced him to surrender real authority to the Military Council while remaining only the symbolic face of the state in order to keep soldiers motivated.
Gadzhiev had no choice.
After the internal coup, negotiations collapsed. The war escalated into brutal invasions, terrorism, massacres, and war crimes committed by every side involved in the conflict.
MAIN STORY
The game is called DOOMER.
The protagonist is Nikolai Lavrov, a 26-year-old poor and hopeless young man. In 1996, desperate for money, he signs up to fight in the war. Soon after arriving at the front, his squad is captured by CCU militants.
Nikolai is thrown into a prison where captured soldiers are tortured, interrogated, or simply left to die. Ordinary soldiers are considered worthless compared to officers.
The game begins with Nikolai trapped inside a dark basement filled with corpses of dead prisoners. He and other soldiers are beaten and abandoned without food or water. After several hours, gunfire erupts above them.
An anti-CCU insurgent group attacks the prison.
One of the insurgents opens the basement hatch and yells at the prisoners to run before escaping himself. Nikolai, weak and half-conscious from smoke inhalation, grabs a pistol from a corpse and attempts to escape the burning prison while avoiding debris, fire, collapsing walls, and CCU militants.
As the prison burns around him, the player’s controls slowly become unstable and distorted because Nikolai is losing consciousness from smoke inhalation.
Eventually he collapses.
When he wakes up, he finds himself tied up inside a truck full of armed insurgents. They do not trust Russians because Russian forces committed atrocities throughout the war, often claiming civilians were being used as “human shields.”
During the drive, Nikolai argues with the insurgents. One of them tells him that Russia helped create the very monsters it is now trying to destroy through years of repression, Russification, and discrimination in the Caucasus. Nikolai has no idea what they are talking about, showing how disconnected ordinary soldiers are from the deeper political history of the war.
The insurgents eventually bring Nikolai to their hidden base, led by a former CCU fighter named Hasan, who later turned against the Confederation and formed his own insurgent movement.
At the base, Nikolai is imprisoned alongside a captured Russian lieutenant colonel and a CCU officer. The CCU officer is executed immediately because the insurgents consider him useless. The Russian officer is taken away for interrogation.
While imprisoned, Nikolai overhears Hasan discussing a dangerous plan with his fighters:
The insurgents plan to infiltrate a major city through the sewer systems and launch surprise attacks from underground before assaulting the city’s massive weapons factory. The factory no longer produces weapons, but it still stores enormous amounts of military equipment left over from Soviet times. Hasan believes that if the insurgents capture the stockpile, the CCU government will collapse.
Later that night, the insurgent base is attacked by CCU forces. Mortars bombard the area while armed militants storm the compound using pickup trucks mounted with machine guns.
During the chaos, a CCU fighter opens Nikolai’s prison cell. If the player reacts quickly enough, Nikolai can ambush the fighter, steal his weapon, and join the battle.
After helping defend the base, Hasan begins trusting Nikolai and allows him to travel with the insurgents.
However, while escaping through nearby mines toward another insurgent base, the tunnel entrance collapses during another bombardment, separating Nikolai from the rest of the insurgents.
Now alone, Nikolai must travel through abandoned Soviet mines filled with broken machinery and decaying infrastructure. The player solves environmental puzzles involving damaged mining equipment before eventually reaching an abandoned depot controlled by smaller CCU forces.
After surviving several battles there, Nikolai finally reaches the insurgent base led by Ramazan, another major insurgent commander.
At first Ramazan believes Nikolai is a spy or infiltrator sent by the CCU. Only after receiving radio confirmation about Hasan’s captured base does he reluctantly believe him.
The insurgents later discover that Hasan is being held inside a heavily guarded apartment block in the city.
A rescue mission begins.
The insurgents travel toward the city but are ambushed on a heavily fortified bridge controlled by elite CCU defenders. After an exhausting battle with massive casualties, the survivors finally cross the bridge and enter the ruined city.
Exhausted, starving, and psychologically broken, the insurgents begin arguing among themselves. Ramazan slowly reveals signs of mental collapse caused by years of war, alcoholism, and guilt over previous atrocities committed by insurgent forces.
Suddenly, the city is bombed by Russian forces.
The insurgents realize the bombardment has forced many CCU fighters into underground bunkers, giving them a rare opportunity to move through the city.
They eventually rescue Hasan during the chaos and begin raiding apartment buildings used as improvised prisons in order to free captured civilians and prisoners.
The insurgents then launch a desperate assault on the massive weapons factory.
Inside, they discover that many CCU soldiers have already abandoned hope and are attempting to flee with crates of weapons. Some surrender almost immediately.
After capturing the stockpile, Hasan contacts insurgent groups from other towns and villages, calling them to gather in the city of Gordolovsk.
Unfortunately, Russian forces intercept the transmission and mistakenly believe the message came from remaining CCU troops.
As a result, the Russian army, the collapsing CCU military, and the insurgents all converge on Gordolovsk at the same time.
The city becomes the center of a massive three-sided urban war.
FINAL CHOICE
Near the end of the game, the player chooses between two sides:
Join the insurgents:
Nikolai fights alongside Hasan’s forces as Gordolovsk collapses into total chaos. The CCU eventually disintegrates, but Russia begins surrounding the city and bombarding insurgent positions. The insurgents manage to escape by train alongside freed prisoners and captured weapons. Nikolai is officially labeled a traitor by Russia. The insurgents flee toward Chechnya, knowing another war will likely begin there soon.
Join the Russian forces:
Nikolai betrays the insurgents and helps Russian forces reclaim the city. He eventually returns home alive, but psychologically destroyed by guilt and everything he witnessed during the war.
DOOMER is not about heroes.
It is about propaganda, radicalization, ruined ideologies, collapsing states, exhausted people, and a war where every side slowly loses its humanity.
And yeah, i translated to english it with ChatGPT. ‼️BUT the main RUSSIAN scenarios was made by me. So it’s not AI slop.
Hello. I’m new to game development and I am learning to make 2d sprites however I need some help on how to make them.
First, how do I make sprite animations of actions like jumping, shooting, do I draw the projectiles and the jump distance in the animation or just the animation and the implement the jump distance while making the game because it takes a lot of space.
Over the last 3-4 years, I've gone from making my game puzzle focused to narrative driven, and then back to puzzle focused after realizing that designing a narrative I liked made me spiral into decision making hell.
Now, I'm trying to wrap up my game and I'm running into multiple questions that I have for the world I'm crafting.
I know the lore, I know the history and I know what everything means/symbolizes, but there are things I don't know how to properly explain to the player (through showing or telling).
The thing is, explaining some of these things would imply that the player can use that information in SOME way to progress, but if I were to explain them, I'd feel compelled to extend development time even more and incorporate those things into more puzzles.
Even the ending, which I haven't drafted yet on paper or in notes, is causing me headaches. I wanted to make an abstract sequence, but now I'm worried that it won't be a good payoff for a puzzle game. At the same time, I can't seem to figure out how to create an actual final puzzle sequence for the player to go through.
I'm very quickly losing motivation to work on this, but I don't want to give it up now. Do you have any tips or suggestions?
(Besides starting over or quitting because I'm not doing that)
There's been some streamers recently using a pirated version of our game*. Unfortunately, the version they are broadcasting is very buggy, very outdated, and missing large amounts of content.
They aren't massive streamers, but aren't small either. In the 25-50k subs range.
On one hand, exposure for us is good, and we want to encourage streaming. On the other hand, we don't really want viewers to think the game is a buggy mess without any content.
Do we ignore it? Or is issuing a take-down in our interest here?
I have mixed feelings about supporting a channel playing pirated games, but there's also the risk the hammer comes down hard on the streamer if we issue a takedown. Streaming pirated games is against the ToS on the platform in question, and shutting a channel down isn't really something I'd feel good about.
\ We have some detection which we use for our metrics, and pirated copies have some hidden visual clues which makes it easy for us to spot them in videos and streams. We make no changes to the gameplay.*
I am solo creating a sim of a factory where a player can learn about food processing and specifically Membrane filtration. The end goal is to have the players experience and learn about the real-life processes within a virtual processsing plant. This includes filtration permeate and retentate, CIP and fouling and doing calculations etc. The game will be for students mostly to play in the classroom.
My question are:
1. what would you as a game dev (or player) want to have as a game?
2. Story (case) driven, or just buttons and valves with some tasks to finish?
3. What systems do you think would fit this game?
4. I have an AI mascot that runs locally that can help and give hints and explanation , would that be good?
5. What genre would this be? (Other than serious game)
Any other advice is of course also welcome!
I’m working on a peer to peer multiplayer game where your current win streak is tracked, and maintaining it can earn players some of the most valuable rewards in the game. However, there is room for manipulation and I don’t know how to solve it. Quitting a match or disconnecting is treated as a loss, which resets the streak. However, since I can’t tell the difference between the host ending the game and a player disconnecting, I realized that if the host is losing, they can end the match by disconnecting themselves, which resets the win streak of the team that would have won. Furthermore, if I implemented a system that could identify that the host ended the match, I shouldn’t stop the game from resetting the streaks, because then the host could leave and save their streak if they are losing. What should I do here? Do other games have similar systems?
| Hi guys, after several months of work, the beta of Leadwerks 5.1 is now available on Steam. Version 5.1 is a significant update that brings a lot of new features, enhancements, and optimizations. Here's the announcement: Here's some of the stuff I added: Efficient New Deferred Renderer The clustered forward+ renderer has been replaced with a new deferred renderer, to provide better performance and easier shader development. Many new optimizations have been implemented, such as the use of the stencil buffer for controlling decal visibility. The transparency system in 5.1 is insanely good, with screen-space reflections, probe volumes, refraction, and rough transparency (frosted glass) all integrated into an efficient rendering pipeline that gives you gorgeous visuals with minimal effort. Support for Potato PCs Given the inflated costs of PC components today, supporting older hardware is more important than ever. Leadwerks 5.1 introduces optimized support for low-end PCs and older computers, ensuring that even users with modest hardware can enjoy smooth gameplay. In fact, Leadwerks 5.1 will run on computer hardware going all the way back to 2010...including integrated graphics. This change unlocks an underserved market and increases the audience for your game by 50%, while delivering better visuals than ever before. Terrain-mesh Blending A new terrain-mesh blending feature lets you seamlessly blend rocks, trees, and other items into the landscape with a natural appearance. This feature makes it easy to achieve stunning outdoors scenery with minimal effort. Upscaling A custom upscaling solution has been added that boosts framerates by as much as 300%, with minimal loss of quality. This allows an Intel HD 630 (definitely potato-class hardware) to achieve a solid 60 FPS in our first-person shooter sample, running at 1080p! All of this is easily programmable with C++ and Lua. Let me know if you have any questions and I will try to answer everyone. Have a nice Memorial Day! :D [link] [comments] |
Genuinely curious and it's something I've been wondering recently.
I'm into rogue-like games like Balatro, deck building card game stuff. Since Balatro, I've seen a lot of interesting looking card games with a similar deck-building 'spin on a classic game' gimmick. I know Slay the Spire obviously, Legends of Runeterra, etc, but there's often some smaller indie ones I see that look interesting.
I'm just wondering why if they're not from a big studio (Runeterra is Riot, and Slay the Spire only got an Android port a couple years later after it really kicked off), why do a lot of this style of game not come out from the start with a mobile version? They seem to be the obvious mobile game choice for the ability to play for ten minutes then put it down again- Balatro is my train station/waiting room game for example.
I've always wanted to play Inscryption but there's no mobile port. I want to clarify I'm not complaining about this, if the Inscryption devs didnt want to or can't make a mobile port for various reasons that's fine, I'll figure out a way to play it someday!
I'm just wondering what the reasons usually are. I'm not a game dev so I have no idea. Is it cost? A lot of extra work, like code that needs to be rewritten in a new language? I had always assumed the mobile gaming market was fairly big because of the amount of people I know who just don't have a PC or console anymore, but maybe it isn't?
Sorry if this is an annoying question, I'm not trying to demand the games I like should have a mobile port because I get that's probably not possible for various reasons, I'm just wondering what the reasons usually are. Thank you :)
My TUF laptop just got stolen, and I can’t figure out who took it or get it back. I was working on my game and it was already 70% done. I was hoping I could make another game on my phone for now, but I can’t seem to find any apps that actually work.
hi, im thinking of applying either to Howest, Breda, DigiPen, or ArtFX, etc. but im not sure if its worth it compared to a general computer science degree.
Is it true that studios hire people from these schools or am i better off not going into debt and just going for cs instead?
i am a gameplay programmer. i have no experience with level design. i can create ugly low poly assets in blender.
I am comfortable in creating functionality in ue5. i have already setup custom player controller, enemies, weapons system etc. my game is basically a platforming + combat using my custom player controller.
I want my game to have linear progression, so no open world.
I want the player to start at point 1 and make his journey to the end. My target is that this journey should take atleast 3-4 hours.
But my problem is i have no idea how do i approach this. i keep spending hours on marketplace looking for assets, or references on google, pintrest. I also look at other games for inspiration. i tried blocking out in ue5, but i simply cant comprehend this part.
How would someone approach this? if you wanted to create a linear map with decent playtime what would be your workflow?
i feel like making it decent is the better option if you care about look a lot, or if youre uploading a demo with it, or just if youre done with seeing the godot logo and colored squares
I do art, and I get messages about game projects pretty regularly, but a lot of them have no budget, no mechanics figured out, no documentation, and sometimes not even a clear idea of what the game actually is.
Honestly, it’s starting to get annoying how many people expect one of the most marketable parts of the game (art) for free while having basically nothing else figured out yet.
To me it always felt like by the time you start looking for artists, you should at least have some core mechanics working, a prototype, maybe some decent documentation, or ideally a small vertical slice already playable.
How does it usually work for you guys in practice?
Hi there!
I'm in the very beginning stages of developing a visual novel, was wondering what the best way of replicating a chat room/discord style for said game would be?
I currently own TyranoBuilder and Visual Novel Maker so would preferably be looking for a solution I could follow through with in either of them, however I'm also open to the idea of learning Ren'Py if that's the only way to achieve the style I'm looking for.
Thanks in advance for any answers! 😄
Hello everyone.
After uploading the Neural Maze demo to Steam (and struggling to get it there), I submitted my application to take part in the next Steam Next Fest. Now that it’s been accepted, I have less than 20 days to improve this demo.
I’d really love to get some feedback on the teaser and the demo to get (at least) some wishlists.
This demo is available in 4 languages and includes the start of the tutorial across 11 of the 100+ planned difficulty levels.
Game pitch You’re losing brain cells, and you’re the only one who can heal yourself. Using the (sometimes faulty) microscope you’ve been lent, you can move your brain cells back to the healthy part of your brain.
But be careful, you’ll have to move them in pairs, at the same time, sometimes through a maze (symbolising your brain) that disappears, sometimes in the dark, and sometimes even with controllers that don’t respond very well.
Help, Obiwan keReddit, you’re my only hope :)
| Hey, Falling on a slope at 25 degrees, I would expect the capsule to go tangent to it as it slips, but it seems that it needs to be 20 degrees or less to do that. I am not an expert in physics, but it would "seem" to me that at 25 degrees a capsule would still slip, would it not? EDIT: SOLVED! Godot's default physics material has friction set to 1 when nothing is assigned. Reducing it makes it behave as it should. [link] [comments] |
I'm self taught, and looking to level up my game (see what I did there!)... I create a mini course for myself with Chad, and got through The Art of Game Design, Game Balance and Game Feel. All excellent books, with the game design system my favourite (also applicable in a bunch of fields). Just a dad making a top down space/Newtonian roguelite.
Any other great books out there?
Y'all will get mad at me, but yeah, I've been trying out vibe coding on a new web project.
Disclaimers: I don't code at work anymore and wanted to start coding a side project to relearn go and vibe coding and see how good it is. When I say relearn go, I learned it for a side project, and never got good at it. So not a professional go dev, or even professional developer anymore really :(.
I started the project by scaffolding out my feature/unit tests and some helpers that make life easier and readable. Then I scaffolded out an MVC architecture, similar to nest.js/Angular for anyone that's used it. This architecture uses services for business logic and repositories for data access. The libraries I'm using are Gin and GORM.
After I really carved that out, I started vibe coding. I can one shot at most an endpoint, but usually a controller, service, model, and repository with its tests. Usually about 300 to 700 lines of code (beyond that I struggle to review it). Sometimes I just carve out a hollow endpoint with no service attached to the controller, other times the service and repository, and other times a whole endpoint.
The thing is it looks good. Very rarely I see something security wise, I will see performance issues from time to time, and most of the issues I spot is are like deeply nested conditionals. Other than that, it can do whole PRs (300 to 700 lines of code) pretty frequently, and I can get out like 2500 lines of code a day (Truthfully all I feel I can cognitively review a day).
Very little do I actually need to intervene, unlike other code I use this for. I'm wondering if it's because what I'm building is so formulaic that this works so well? Maybe it's just my competency levels. Not really ashamed of having a skill issue being divorced from code for a bit now. Maybe I'm also a bad vibe coder or just giving the appropriate amount of context?
The only other thing to add: It seems like a lot of this is boilerplage generation too. Laravel/Spring/ASP/Nest all had a lot of command line or code editor generation tools that would generate a lot boilerplate (models, controllers with methods, API, notifications, it really goes on and on).
What's y'alls experience with this?
This is the weekly thread for Small Projects.
The point of this thread is to have looser posting standards than the main board. As such, projects are pretty much only removed from here by the mods for being completely unrelated to Go. However, Reddit often labels posts full of links as being spam, even when they are perfectly sensible things like links to projects, godocs, and an example. r/golang mods are not the ones removing things from this thread and we will allow them as we see the removals.
Please also avoid posts like "why", "we've got a dozen of those", "that looks like AI slop", etc. This the place to put any project people feel like sharing without worrying about those criteria.
How does one know how to separate concerns? when building projects from scratch? most of the time i've been using LLMs to figure this out. but i cant seem to make an intution as to how to separate concerns and create different packages and its pretty annoying. for example i am writing to do AST aware parsing depending on the language. i wrote logic to classify the file, now i need to write logic to Parse and return a Block of code depending on the language as there are different ast parsers for different languages. now i'm confused as to how should i implement this? do i just get the file type and write switch statements? (i think that's a bad go convection). how exactly does one build up the intuition to design boundaries and write code fast? this is kinda a new lang to me.
tldr;
how does one develop intuition for writing clean go code?
| submitted by /u/der_gopher [link] [comments] |
Hi,
If you are using WebGPU with Go you might find this module useful. This allows you to compose shaders into multiple modules (via "import" declarations) and conditional compilation (@if feature).
It passes the official wesl test suite.
https://pkg.go.dev/github.com/bluescreen10/wesl-go
If you are curious, this is the official spec.
https://github.com/uber-go/guide/blob/master/style.md#channel-size-is-one-or-none
"Channels should usually have a size of one or be unbuffered. By default, channels are unbuffered and have a size of zero. Any other size must be subject to a high level of scrutiny. Consider how the size is determined, what prevents the channel from filling up under load and blocking writers, and what happens when this occurs."
Perhaps this might be obvious, but I have a hard time understanding this one.
Specially when books, videos/courses around tells you otherwise, they usually recommend the number o CPUs or runtime.GOMAXPROCS
Could someone help me understanding the idea behind the size 1 channel?
Hi, I'm a bit new to new Go, so maybe the answer is obvious. Though my own research was a bit inconclusive.
What I have:
And here is my problem:
Now the important question though: We have now two waiting messages B and C. When the worker is done with its work, which message is picked next?
From my research, this order is not guaranteed by channels. I.e., even if channel <- B is executed before channel <- C, no guarantees are made by the language regarding which thread is woken up to send the message next. Only for buffered channels, while the buffer still has capacity.
I tried to investigate mutexes, E.g., if I have two calls to `mutext.Lock()` of a locked mutex, when it gets unlocked, it could be that the second call gets active (something about starvation vs normal mode, sorry I don't remember the details).
Given that I can't rely on both mutex locks and channels, I don't quite know what to do. Are there other primitives I could use with stricter guarantees?
If I could use a single threaded system, then this would probably be a non-issue. But since the connection between the sender and receiver is multiplexed, I can't just block the whole system, just because one of many workers is too slow.
Right now I'm "solving" this by having a large buffered channel. Though if one of the worker is blocked or deadlocked, even the largest buffer might eventually fill up, which means the receiving end may eventually also halt and no more messages get processed.
I've been playing with Go 1.26's experimental `simd/archsimd` package and
built a small slice library around it: github.com/atul-007/turboslice
The interesting result wasn't where SIMD won. It was where it *lost*.
I expected hand-written 128-bit SSE to beat the compiler on simple
reduction loops like `Find`, `DotProduct[float64]`, and elementwise
`AddSlices[float64]`. On an Intel Xeon Platinum 8481C (Sapphire Rapids,
GCE c3-standard-4), the compiler emits AVX-512 for these and beats my
SSE intrinsics by 60-90%. So the SIMD build now delegates them to the
scalar path on purpose.
What actually wins (benchstat, 6 iterations, performance governor):
| Op | N | TurboSlice | Scalar | Speedup |
|---------------------|------|------------|---------|---------|
| Min[int32] | 1M | 267 µs | 705 µs | 2.64x |
| Min[int32] | 64K | 16.5 µs | 44.0 µs | 2.66x |
| Count[int32] | 1M | 360 µs | 681 µs | 1.89x |
| Sum[int32] | 1M | 266 µs | 353 µs | 1.33x |
| Sum[float64] | 1M | 531 µs | 705 µs | 1.33x |
| DotProduct[int32] | 1M | 453 µs | 700 µs | 1.55x |
Geomean across the full suite: −6.30%.
Other things I learned the hard way:
**Size thresholds matter.** Naive Sum-with-SIMD at N=64 was 600%*slower* than scalar — call overhead dominates. The library nowgates Sum on N ≥ 4096 and DotProduct on N ≥ 16384.
**Pattern-comparison ops (min/max/count) are where SSE still paysoff.** The compiler doesn't autovectorize `if v < best` as cleanlyas it does `acc += v`.
**No 64-bit integer multiply in SSE/AVX2.** `PMULLQ` is AVX-512 DQonly, so `MulSlices[int64]` is scalar everywhere. This isn'twell-known and bit me.
**Zero CGo, zero `unsafe`, zero `.s` files.** Just `archsimd`intrinsics behind a build-tag dispatch (`goexperiment.simd` vsdefault). Scalar fallback is automatic on ARM64 / no-GOEXPERIMENT.
Repo: https://github.com/atul-007/turboslice
Reproduce: `./scripts/bench-native.sh` on any linux/amd64 box (needs
Go 1.26 + `GOEXPERIMENT=simd`).
Happy to take methodology critiques — particularly curious if anyone
has seen `archsimd` go differently on AVX-512-only chips or AMD Zen 4.