🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #310075

Re: Coroutines w (GNU) C

#310075
From: heby
Date: Mon, 27 Jan 2020 19:51
42 lines
3406 bytes
On 27/01/2020 20:24, Maciek Godek wrote:
> Konkretnie dlatego, że rozwijam system w języku C, i potrzebuję mechanizmu dla języka C.

I dlaczego nie możesz uzy kompilatora C++? To kwestie religijne?

>> W systemach gdzie się przydaje na 100% jest C++. W 99.9%
>> wypadków wystarczy zamienić gcc na g++.
> Tak. Można też np. osadzić interpreter Lua, który też wspiera coroutines.

Nie, poniewa zmiana z gcc na g++ to jaki 10 sekund, a zmiana na Lua to 
od kilku do kilkuset godzin i zerowy sens.

>> Po co komu coroutines w C skorą są/będą w C++?
> To teraz powiedz mi:
> - czy powinienem teraz korzystać z coroutines ze standardu, który jeszcze nie został zatwierdzony, czy może raczej wziąć teraz boosta, a później usuwać zależności i refaktoryzować do standardu?

Użyć boosta, dorobić abstrakcję i zrefaktoryzować jak będzie po co za 
kilka lat.

> - w jaki sposób te korutyny są w booście albo w standardzie zaimplementowane? Czy potrafisz z całą pewnością powiedzieć, że nie będzie problemu ze wznawianiem ich w interrupt handlerach na ARMach?

"[...] Pomysł opiera się na rozszerzeniu kompilatora GCC [...]"

Czy potrafisz z całą pewnością wskazać sensowną zaletę side effects 
jakiejś implementacji vs szeroko używana bibliteka ktorej spore 
fragmenty lądują co jakiś czas w standardzie?

Jesteś pewny że ktokolwiek będzie uzywać *KORUTYN* w handlerach przerwań 
na ARMie czy innym 6502? Żartujesz, powiedz proszę.

> Czy może potrzebuję nadać im jakiś magiczny atrybut w rodzaju "nothrow", żeby mieć pewność, że to zadziała dla mojego use case'u?

Dlaczego masz nadawać nothrow? Jak exception spadnie na dno stosu to w 
dowolnej implementacji dzieją się interesujace rzeczy.

A już najbardziej interesujace rzeczy dzieją się jak ten exception jest 
wywołany z Twojego C...

> Bo u mnie to jest 20 linijek bardzo prostego kodu.

Bazującego feature jakiegoś kompilatora o niejasnej przyszłosci i 
przenośności.
Technical Details
Message-ID: <r0nevq$9iq$1@dont-email.me>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!goblin3!goblin.stu.neva.ru!news.neodome.net!news.uzoreto.com!eternal-september.org!feeder.eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
References: <4375b52d-ba21-462a-8844-9bd1a02e9ece@googlegroups.com> <r0k8i5$ifg$1@dont-email.me> <ce3f0b08-658f-4248-b82c-09f093a7f20c@googlegroups.com> <r0kq6d$v6h$1@dont-email.me> <748c5d16-f4a8-43a0-8a56-bea0800e1e04@googlegroups.com> <r0n95e$35l$1@dont-email.me> <f3df206c-11d4-4b22-87ff-fc7aa00935f3@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!goblin3!goblin.stu.neva.ru!news.neodome.net!news.uzoreto.com!eternal-september.org!feeder.eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: heby <heby@poczta.onet.pl>
Newsgroups: pl.comp.lang.c
Subject: Re: Coroutines w (GNU) C
Date: Mon, 27 Jan 2020 20:51:21 +0100
Organization: A noiseless patient Spider
Lines: 42
Message-ID: <r0nevq$9iq$1@dont-email.me>
References: <4375b52d-ba21-462a-8844-9bd1a02e9ece@googlegroups.com> <r0k8i5$ifg$1@dont-email.me> <ce3f0b08-658f-4248-b82c-09f093a7f20c@googlegroups.com> <r0kq6d$v6h$1@dont-email.me> <748c5d16-f4a8-43a0-8a56-bea0800e1e04@googlegroups.com> <r0n95e$35l$1@dont-email.me> <f3df206c-11d4-4b22-87ff-fc7aa00935f3@googlegroups.com>
Mime-Version: 1.0
Injection-Date: Mon, 27 Jan 2020 19:51:22 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="a142005fc87d8a3409f6f9b4ffde8cce"; logging-data="9818"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/Wy7HBtajfoa1FvD1T5VPX"
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1
Cancel-Lock: sha1:8tc4hUjSXiaYGWtSK7+6CS9dap4=
In-Reply-To: <f3df206c-11d4-4b22-87ff-fc7aa00935f3@googlegroups.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit